- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
正文 正文 正文 谢 谢 Thanks for listening. 第2章 Servlet会话跟踪 目标 -*- 掌握会话跟踪的相关技术 理解Cookie的原理 掌握Cookie的读写方法使用 理解Session的原理 理解Session的生命周期 熟练掌握Session的方法使用 掌握ServletContext的方法使用 会话跟踪技术 会话跟踪: HTTP是一种无状态的协议,当浏览器与服务器之间的请求、响应结束后,服务器上不会保留任何客户端的信息,因此会话必须靠编程实现。 现在的Web应用,往往需要记录特定客户端一系列请求之间的联系,以便于对客户的状态进行追踪。比如,在购物网站,服务器会为每个客户配置一个购物车,购物车需要一直跟随客户,以便于客户将商品放入购物车中,而且每个客户之间的购物车也不会混淆。 会话跟踪技术的方案包括以下几种 : Cookie技术 Session技术 URL重写技术 隐藏表单域技术 -*- 由于隐藏表单域技术是将会话ID添加到隐藏域中,实现起来较为繁琐,因此在实际应用中不推荐使用该技术 Cookie Cookie是服务器发给客户端的一小段文本,保存在浏览器所在客户端的内存或磁盘上 Cookie大大扩展了基于Web的应用功能 Cookie是会话跟踪的一种解决方案 Cookie可用于网站内容的用户定制 Cookie的安全机制 Cookie不会以任何方式在客户端被执行 浏览器会限制来自同一个网站的Cookie数目 单个Cookie的长度是有限制的 浏览器限制了最多可以接受的Cookie数目 -*- Cookie的保存位置与操作系统和浏览器类型有关。Windows XP系统下IE浏览器的Cookie保存在C:\Documents and Settings\当前系统用户名\Local Settings\temporary internet files文件中的Cookies文件夹中 使用Cookie Cookie的创建及使用 Cookie的构造方法带有两个String类型的参数,分别用于指定Cookie的属性名称和属性值,语法如下: Cookie类的常用方法如下表: 示例:2.1 LoginServlet.java 方法 说明 getMaxAge()/setMaxAge() 读取/设置Cookie的过期时间。如果使用setMaxAge()方法设置了一个负值,表示这个Cookie在用户退出浏览器后马上过期,如果setMaxAge()指定一个0值,表示删除此Cookie getValue()/setValue() 读取/设置Cookie属性值 getComment()/setComment() 读取/设置注释 -*- Cookie userCookie = new Cookie(uName,username); Session Session技术 Session是在Java Servlet API中引入的一个非常重要的机制,用于跟踪客户端的状态,即在一段时间内,单个客户端与Web服务器之间的一连串的交互过程称为一个会话。 HttpSession是Java Servlet API中提供的对Session机制的实现规范。 Servlet容器为每一个HttpSession对象分配一个唯一的标识符,称为SessionID,同时将SessionID发送到客户端,由浏览器负责保存此SessionID。当客户端再发送请求时,浏览器会同时发送SessionID,Servlet容器可以从请求对象中读取SessionID,根据SessionID的值找到相应的HttpSession对象,如下图所示: -*- 通常服务器借助于Cookie把SessionID存储在浏览器进程中,在该浏览器进程下一次访问服务器时,服务器就可以从请求中的Cookie里获取SessionID 创建HttpSession 创建HttpSession对象有以下两种方式: getSession():返回当前请求的会话,如果该会话对象不存在则创建一个新会话。 getSession(boolean create):返回当前请求的会话。如果当前请求不属于任何会话,而且create参数为true,则创建一个会话, create参数为false则返回null。 getSession()等价于getSession(true) -*- HttpSession session=request.getSession();//获取当前Session HttpSession session=request.getSession(true);//获取当前Session HttpSession的方法 方法名 描述 public voi
文档评论(0)