一 ,会话跟踪 会话:从网络服务器的观点看,一个会话包含单个浏览器调用期间进行的所有请求,换句话说,当我们打开浏览器时,会话开始,关闭浏览器时,会话结束。 问题的出现:一个servlet是供大家使用的,不可能供某一个客户端单独使用,也可以说它是无状态的(不能存储单个客户端的信息),它供多个client调用(访问),而问题的出现是需要存储每个client自己特征的信息(如电子商城的购物车)。 问题的解决: 第一:使用每个client的ip地址来区别他们吗?不能,因为可能多个客户在一台机器上运行,而请求也可能是通过代理服务器路由,在这两种情况下,IP地址都不能做为唯一标识符。 第二:Cookie存储或URL重写 Cookie是能够嵌入到HTTP请求或响应中的一段数据,也可以这么理解,它是在client内存或硬盘中的一个文本文件或者说就是一个字符串,它最初由Netscape公司引入的。一种典型的情形是,WEB服务器在一个响应头中嵌入cookie值,浏览器将在每一个子请求中返回相同的cookie值。 一些有用的代码: cookie cookies[]=myhttprequest.getCookies();//返回的是一个cookie数组 cookie c=cookies[i]; String myName=c.getName(); String myValue=c.getValue(); String myComment =c.getComment();//返回这个cookie目的的注释?? Int myMaxAge =c.getMaxAge();//返回这个cookie的最大有效期,采用秒进行规定,缺省情况下,-1指出cookie将会一直存在到浏览器会话终止。 URL重写:对一些特殊的用户或不支持cookie的浏览器,我们不得不使用URL重写技术,由servlet创建的所有衔接和重定位必须编码,以会话ID作为URL的一部分。URL编码的方法依据特定服务器而定,但是最可能采用增加参数或额外路径信息的方式。 String url=myhttpRequest.getRequestURI(); MyHttpResponse.encodeURL(url);
二,Servlet API 1,? 接口名称:javax.servlet.HttpServletRequest 方法: public String getAuthType();//返回用来保护servlet的认证模式的名称。 2, 接口名称:javax.servlet.http.HttpSession; 方法: public long getCreationTime(); public long ?
|
Servlet基础(二)
最新推荐文章于 2024-09-20 21:10:07 发布