当前位置: 首页 > 图文教程 > 网络编程 > JSP > 使用JSP读取客户端信息

JSP
缓存JSP显示的内容
Bean和Servlet的企业应用
servlet会话
怎样从HttpServletRequest中得到完整的请求URL
Tips for Server-Side Redirection
利用Servlet的上下文环境和会话来实现聊天的程序
Servlet中如何捕获Session事件?
Servlet实现动态图文结合输出
如何在JSP中处理中文
使用JSP读取客户端信息
取代JSP--一种新的模版引擎Tea
Jsp最佳实践
如何用servlet在客户端生成一个合成图片
web.xml 常用结点说明[1]
Jsp最佳实践(2)
servlet中的几个路径有关的方法
JSP连接各类数据库大全(3)
JSP编程进度条设计实例(2)
用JSP操作Cookie(1)
ASP与JSP的比较(2)

使用JSP读取客户端信息


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-04   浏览: 318 ::
收藏到网摘: n/a

请阅读以下代码。如果你的使用要求不同,可对这些代码加以很方便的修改。这些代码可以使你获得: 
公司company, 用户name,版本version,main version,minor version  
操作系统(未完成!),语言language,locale等。  
建立一个新的JSP文件:  
<%@ page language="java" import="de.hunsicker.http.util.*"%> 
<% 
Browser eins = new Browser(request, session); 
out.println(eins.getVersion()); 
%> 
请将下列class文件加入classpath (你要建立同样的目录结构-- de.hunsicker.http.util,当然也可以自己调节包的名称。!):  
  1. package de.hunsicker.http.util; 
  2. import java.util.*; 
  3. import javax.servlet.*; 
  4. import javax.servlet.http.*; 
  5. public class Browser extends HttpServlet 
  6. { 
  7. protected HttpServletRequest request; 
  8. protected HttpSession session; 
  9. protected String userAgent; 
  10. protected String company; // Firmenname des Herstellers 
  11. protected String name; // Bezeichnung des Browsers 
  12. protected String version; // Version 
  13. protected String mainVersion; // Hauptversion 
  14. protected String minorVersion; // Unterversion 
  15. protected String os; // Betriebssystem 
  16. protected String language = "de"; // Sprachcode Standard 
  17. protected Locale locale; // Locale-Objekt mit den aktuellen 
  18. // Spracheinstellungen 
  19. private Hashtable supportedLanguages; // Untersttzte Sprachen 
  20. public Browser(HttpServletRequest request, HttpSession session) 
  21. { 
  22. this.initialize(); 
  23. this.request = request; 
  24. this.session = session; 
  25. this.setUserAgent(this.request.getHeader("User-Agent")); 
  26. this.setCompany(); 
  27. this.setName(); 
  28. this.setVersion(); 
  29. this.setMainVersion(); 
  30. this.setMinorVersion(); 
  31. this.setOs(); 
  32. this.setLanguage(); 
  33. this.setLocale(); 
  34. } 
  35. public void initialize() 
  36. { 
  37. this.supportedLanguages = new Hashtable(2); 
  38. this.supportedLanguages.put("en", ""); 
  39. this.supportedLanguages.put("de", ""); 
  40. } 
  41. public void setUserAgent(String httpUserAgent) 
  42. { 
  43. this.userAgent = httpUserAgent.toLowerCase(); 
  44. } 
  45. private void setCompany() 
  46. { 
  47. if (this.userAgent.indexOf("msie") > -1) 
  48. { 
  49. this.company = "Microsoft"; 
  50. } 
  51. else if (this.userAgent.indexOf("opera") > -1) 
  52. { 
  53. this.company = "Opera Software"; 
  54. } 
  55. else if (this.userAgent.indexOf("mozilla") > -1) 
  56. { 
  57. this.company = "Netscape Communications"; 
  58. } 
  59. else 
  60. { 
  61. this.company = "unknown"; 
  62. } 
  63. } 
  64. /** 
  65. * Liefert den Firmennamen des Herstellers des verwendeten Browsers. 
  66. */ 
  67. public String getCompany() 
  68. { 
  69. return this.company; 
  70. } 
  71. private void setName() 
  72. { 
  73. if (this.company == "Microsoft") 
  74. { 
  75. this.name = "Microsoft Internet Explorer"; 
  76. } 
  77. else if (this.company == "Netscape Communications") 
  78. { 
  79. this.name = "Netscape Navigator"; 
  80. } 
  81. else if (this.company == "Operasoftware") 
  82. { 
  83. this.name = "Operasoftware Opera"; 
  84. } 
  85. else 
  86. { 
  87. this.name = "unknown"; 
  88. } 
  89. } 
  90. /** 
  91. * Liefert den Namen des verwendeten Browsers. 
  92. */ 
  93. public String getName() 
  94. { 
  95. return this.name; 
  96. } 
  97. private void setVersion() 
  98. { 
  99. int tmpPos; 
  100. String tmpString; 
  101. if (this.company == "Microsoft") 
  102. { 
  103. String str = this.userAgent.substring(this.userAgent.indexOf("msie") + 5); 
  104. this.version = str.substring(0, str.indexOf(";")); 
  105. } 
  106. else 
  107. { 
  108. tmpString = (this.userAgent.substring(tmpPos = (this.userAgent.indexOf("/")) + 1, tmpPos + this.userAgent.indexOf(" "))).trim(); 
  109. this.version = tmpString.substring(0, tmpString.indexOf(" ")); 
  110. } 
  111. } 
  112. /** 
  113. * Liefert die Versionsnummer des verwendeten Browsers. 
  114. */ 
  115. public String getVersion() 
  116. { 
  117. return this.version; 
  118. } 
  119. private void setMainVersion() 
  120. { 
  121. this.mainVersion = this.version.substring(0, this.version.indexOf(".")); 
  122. } 
  123. /** 
  124. * Liefert die Hauptversionsnummer des verwendeten Browsers. 
  125. */ 
  126. public String getMainVersion() 
  127. { 
  128. return this.mainVersion; 
  129. } 
  130. private void setMinorVersion() 
  131. { 
  132. this.minorVersion = this.version.substring(this.version.indexOf(".") + 1).trim(); 
  133. } 
  134. /** 
  135. * Liefert die Unterversionsnummer des verwendeten Browsers. 
  136. */ 
  137. public String getMinorVersion() 
  138. { 
  139. return this.minorVersion; 
  140. } 
  141. private void setOs() 
  142. { 
  143. if (this.userAgent.indexOf("win") > -1) 
  144. { 
  145. if (this.userAgent.indexOf("windows 95") > -1 || this.userAgent.indexOf("win95") > -1) 
  146. { 
  147. this.os = "Windows 95"; 
  148. } 
  149. if (this.userAgent.indexOf("windows 98") > -1 || this.userAgent.indexOf("win98") > -1) 
  150. { 
  151. this.os = "Windows 98"; 
  152. } 
  153. if (this.userAgent.indexOf("windows nt") > -1 || this.userAgent.indexOf("winnt") > -1) 
  154. { 
  155. this.os = "Windows NT"; 
  156. } 
  157. if (this.userAgent.indexOf("win16") > -1 || this.userAgent.indexOf("windows 3.") > -1) 
  158. { 
  159. this.os = "Windows 3.x"; 
  160. } 
  161. } 
  162. } 
  163. /** 
  164. * Liefert den Namen des Betriebssystems. 
  165. */ 
  166. public String getOs() 
  167. { 
  168. return this.os; 
  169. } 
  170. private void setLanguage() 
  171. { 
  172. String prefLanguage = this.request.getHeader("Accept-Language"); 
  173. if (prefLanguage != null) 
  174. { 
  175. String language = null; 
  176. StringTokenizer st = new StringTokenizer(prefLanguage, ","); 
  177. int elements = st.countTokens(); 
  178. for (int idx = 0; idx elements; idx++) 
  179. { 
  180. if (this.supportedLanguages.containsKey((language = st.nextToken()))) 
  181. { 
  182. this.language = this.parseLocale(language); 
  183. } 
  184. } 
  185. } 
  186. } 
  187. /* 
  188. * Hilfsfunktion fr setLanguage(). 
  189. */ 
  190. private String parseLocale(String language) 
  191. { 
  192. StringTokenizer st = new StringTokenizer(language, "-"); 
  193. if (st.countTokens() == 2) 
  194. { 
  195. return st.nextToken(); 
  196. } 
  197. else 
  198. { 
  199. return language; 
  200. } 
  201. } 
  202. /** 
  203. * Liefert das L?nderkürzel der vom Benutzer 
  204. * bevorzugten Sprache. 
  205. */ 
  206. public String getLanguage() 
  207. { 
  208. return this.language; 
  209. } 
  210. private void setLocale() 
  211. { 
  212. this.locale = new Locale(this.language, ""); 
  213. } 
  214. /** 
  215. * Liefert ein Locale-Objekt mit der Sprach-Prferenz des verwendeten Browsers 
  216. */ 
  217. public Locale getLocale() 
  218. { 
  219. return this.locale; 
  220. } 
  221. }