第四章维护会话.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章维护会话课件

第四章 维护会话 跟踪客户会话 使用HttpSession对象维护会话信息 监视会话对象 什么是客户会话 会话的工作机制 维护会话的几种方式 URL重写技术 cookie技术 隐藏窗体技术 HttpSession对象 HTTP通信过程 客户向Web服务器发送一个HTTP请求,服务器收到请求后根据请求做必要的处理并生成一个响应信息,然后把它回送给客户。这个请求-响应过程是在一条网络连接上发生的。这一过程结束后,服务器就关闭了该连接。 服务器的任何失败或任何网络失败都会导致连接的终止。 当用户发送另一条请求时,所有的请求-响应循环都再次发生,客户和服务器之间必须重新建立连接。 HTTP/1.1中有了一个可选特性“keep-alive”,允许客户在多个请求之间使用相同的连接。但是浏览器只有在服务器支持的时候才能使用这一特性,并且相关的请求之间的时间间隔都比较小。 典型的在线商店的情况: 用户刚刚在一个页面中挑选到一种商品,添加到购物车中,在下一个商品页面中又挑选到一种添加到购物车中。 注意到这两次选择是在不同的HTTP连接中发生的。而用户希望两次挑选的商品在同一个购物车中一起交付,而不是每选一件商品都要交付一次。这就需要一种机制来唯一的标识用户,以便跟踪客户在站点中的行为。 会话: 这种在多次HTTP连接间维护用户与同一用户发出的不同请求之间关联的情况称为维护一个会话(session)。 会话的特征 会话能够把用户与同一用户发出的不同请求之间关联起来。不同用户的会话应当是相互独立的。 会话一旦建立就应当一直存在,直到用户空闲时间超过了某一个时间界限,容器才应当释放该会话资源。 在会话的存活期间,用户可能给服务器发送了很多请求,该用户的这些请求信息都可以存储在会话中。 网上购物商店的购物车 网上商店的困惑 在上述的网上商店中,用户的会话信息保存在服务器端,用户与服务器之间必须提供一种机制,标识某一用户与他在服务器端用户状态之间的对应关系。这种机制必须保证: 允许用户在不同页面(如:Servlet)间浏览而不会丢失“购物车” 必须避免不同用户的“购物车”混淆。用户不会允许自己为别的用户付款。 不幸的是通常情况下Web服务器不会自动跟踪用户操作轨迹。捕获并存储用户轨迹是Web应用开发人员的工作。 为了维护用户和用户行为之间的关联性,可以采用多种机制,主要是以下几种方法: URL重写技术 cookie技术 隐藏窗体技术 URL重写技术建立在这样的一种思想之下: 客户第一次访问网站时,将会话信息添加或嵌入到由服务器发出的每一个响应的URL中。 当用户再次访问网站时,URL中会把这个会话信息作为用户请求参数返回服务器端,服务器根据返回的会话信息来标识该客户,维护整个会话的信息持续性。 常见的URL重写格式 为了保持URL的简洁,通常这个嵌在URL中的会话信息是一个由服务器生成的代表客户的唯一性的ID号,在URL的表现形式上,它通常是作为URL查询参数的形式出现的,如: http://.../servlet /Rewritten?sessionid=678 Hashtable ht; public void init(ServletConfig config) throws ServletException{ ht=new Hashtable(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(“text/html; charset=GBK”); PrintWriter out = response.getWriter(); out.println(“htmlheadtitleURL Rewriting Servlet/title/head”); out.println(“body bgcolor=\”#ffffff\“”); int visitCount; String sessionID=request.getParameter(“sessionID”); if(sessionID==null){ Random rand=new

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档