第四章、维护会话.ppt
《第四章、维护会话.ppt》由会员分享,可在线阅读,更多相关《第四章、维护会话.ppt(69页珍藏版)》请在三一办公上搜索。
1、第四章 维护会话,跟踪客户会话 使用HttpSession对象维护会话信息 监视会话对象,跟踪客户会话,HTTP通信过程网上商店购物流程 什么是会话 会话的工作机制 维护会话的几种方式URL重写技术cookie技术隐藏窗体技术HttpSession对象,跟踪客户会话,4.1节,HTTP通信过程客户向Web服务器发送一个HTTP请求,服务器收到请求后根据请求做必要的处理并生成一个响应信息,然后把它回送给客户。这个请求响应过程是在一条网络连接上发生的。这一过程结束后,服务器就关闭了该连接。服务器的任何失败或任何网络失败都会导致连接的终止。当用户发送另一条请求时,所有的请求 响应循环都再次发生,客户
2、和服务器之间必须重新建立连接。HTTP/1.1中有了一个可选特性“keep-alive”,允许客户在多个请求之间使用相同的连接。但是浏览器只有在服务器支持的时候才能使用这一特性,并且相关的请求之间的时间间隔都比较小。,跟踪客户会话,4.1节,跟踪客户会话 HTTP通信过程,跟踪客户会话,4.1节,跟踪客户会话HTTP协议无状态性,HTTP协议无状态连接的优点每个请求-响应操作一结束,所用的网络连接即被关闭,Web服务器的资源不会被无谓占用,Web服务器可为更多的用户服务HTTP协议无状态连接的缺点基于HTTP协议的使用Servlet技术的Web应用也是无状态的。同一用户的不同次请求响应操作是通
3、过不同的网络连接实现的当用户第一次访问服务器时,该用户的信息就被保存在服务器中。但当用户第二次再访问服务器时,由于前后二次的访问是通过二次的网络连接实现的,服务器无法判断前后二次访问是否属于同一个用户也就是说,基于Http协议的服务器无法自动的在它所保存的用户信息与当前访问的用户之间建立起联系。需要由程序员通过编写Web服务器程序来实现这种联系,跟踪客户会话,4.1节,顾客在网上商店在线购物流程:顾客登录网上商店,Web服务器将商品展示网页做为响应信息发给顾客顾客选中一种商品通过客户端请求发给服务器,服务器再次将商品展示网页做为响应信息发给客户端,顾客再挑选另外商品顾客挑选完商品,向服务器发出
4、结算请求服务器将顾客购物信息发往网上银行进行结算。,什么是会话,跟踪客户会话,4.1节,网上商店的困惑顾客挑选的商品信息被保存在服务器端。但顾客的商品挑选是在多个网络HTTP连接中发生的服务器无法判断这些连接是否来自同一个顾客,所以商品的结算只能按逐个连接进行。显然这样的操作无法付诸实际这就需要一种机制:判断多次的网络请求响应操作,是否来自同一个客户也就是必须在客户端与服务器之间建立某种机制:对顾客挑选商品的多次的网络请求响应操作实行全程跟踪。这种机制必须保证:当用户在不同页面(如:Servlet)间浏览时,都能与该用户保存在的服务器的会话对象“购物车”保持联系除了自己的购物车,用户不应与其他
5、用户的购物车有任何联系,什么是会话,什么是会话,基于Http协议的Web服务器无法自动地为位于客户端的用户与Web服务器之间建立上述机制。建立上述机制是Web应用程序开发人员的任务。什么是会话:称同一顾客的多个网络请求响应操作为会话(session)称维护同一客户在不同网络请求响应操作之间关联为维护会话,跟踪客户会话,4.1节,会话(session)的特征会话能够把用户与该用户发出的不同请求之间关联起来。但不同用户的会话应当是相互独立的。会话一旦建立就一直存在,直到用户空闲时间(指二次请求的时间间隔)超过了某一个时间界限,或被用户强制截断,容器才释放该会话资源。在会话的存活期间,用户可能给服务
6、器发送了很多请求,该用户的这些请求信息都可以存储在属于该用户的会话中。,什么是会话,会话的工作机制,在客户端和服务器端引入某种记号,称为会话对象:会话对象能唯一标识一个顾客会话对象始终依附于同一个顾客的不同次网络请求响应操作中,随着网络请求响应操作在客户端和服务器之间不断被传递,以此来标识属于同一顾客的商品挑选操作,会话的工作机制-网上商店实例,用户输入个人信用信息登录到网上商店,商店为用户创建一个独一无二的、该用户独有的会话对象-购物车,跟踪客户会话,4.1节,网上商店的购物流程,跟踪客户会话,4.1节,网上商店的购物流程,会话的工作机制-网上商店实例,用户浏览商品网页,察看商品信息,挑选欲
7、购商品,欲购商品信息在一次HTTP连接中被传递到Web服务器,在Web服务器中,该欲购商品信息被保存在该用户的会话对象购物车中,会话的工作机制-网上商店实例,用户向网上购物商店发出结账请求,Web服务器将购物车中的欲购商品信息传递至客户端,供用户核对和确认,若用户核对并确认购买,Web服务器会将该用户会话对象中欲购商品信息保存到数据库中,并联系网上银行和邮局向用户结算和发货。,跟踪客户会话,4.1节,网上商店的购物流程,跟踪客户会话,4.1节,为了在位于客户端的用户与Web服务器之间建立联系,可以采用多种机制,常用以下几种方法:URL重写技术 cookie技术 隐藏窗体技术,维护会话的方式,跟
8、踪客户会话,4.1节,URL重写技术建立在这样的一种思想之下:当客户在某次会话中第一次访问网站时,服务器为其建立了一个对话对象,并用一个独一无二的会话ID做为标识的键值在服务器向客户发出的每一个响应中都嵌入了该项ID当用户于此后再次访问网站时,就在URL中加入这个会话ID,作为用户请求参数的一部分发给服务器端服务器根据接收的会话ID来标识该客户,维护整个会话的信息持续性。常见的URL重写格式为了保持URL的简洁,通常这个嵌在URL中的会话信息是一个由服务器生成的代表客户的唯一性的ID号,在URL的表现形式上,它通常是作为URL查询参数的形式出现的,如:http:/./servlet/Rewri
9、tten?sessionid=678,维护会话的方式-URL重写,跟踪客户会话,4.1节,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”);Pr
10、intWriter out=response.getWriter();out.println(“URL Rewriting Servlet”);out.println(“”);int visitCount;String sessionID=request.getParameter(“sessionID”);if(sessionID=null)Random rand=new Random();sessionID=Long.toString(rand.nextLong();visitCount=1;ht.put(sessionID,new Integer(visitCount);else visi
11、tCount=(Integer)ht.get(sessionID).intValue();visitCount+;ht.put(sessionID,new Integer(visitCount);out.println(Session ID=+sessionID);out.println(No.of times visited=+visitCount);out.println(Click here to visit servlet again.);out.close();public void destroy()ht.clear();ht=null;,public class URLRewri
12、tingServlet extends HttpServlet,跟踪客户会话,4.1节,维护会话的方式-URL重写,跟踪客户会话,4.1节,URL重写技术的优点:用户是匿名的;在Web服务器实现上得到普遍的支持;URL重写技术的缺点:由于会话信息作为查询参数在URL上是可见的,因此会话存在一定的安全隐患;需要对所有动态生成的URL进行重写,代码比较繁琐;只能用于动态产生的文档如Servlet和JSP页面,而不能用于HTML文档;重写的URL不能长期有效,维护会话的方式-URL重写,跟踪客户会话,4.1节,什么是cookie 一些网站会在您的计算机上的以小文本文件存储信息。这种文件称为cooki
13、e。,维护会话的方式-cookie技术,跟踪客户会话,4.1节,维护会话的方式-cookie技术,常见的cookie属性 保存在客户端的cookie中,通常保存下列属性以决定该cookie在会话中的作用和行为。,跟踪客户会话,4.1节,利用cookie跟踪维护客户信息的典型工作过程当客户首次访问网站时,服务器为该客户生成一个唯一的ID号,同时生成用于存放该客户会话信息的小表。同时服务器中维护有一张保存所有客户会话信息的大表。将存放会话信息的小表存放在大表中。并以客户ID号作为查找的索引。服务器生成一个cookie,以ID号作为cookie的键值发送给客户端。客户端浏览器存储该cookie,并在
14、后续的向服务器提出的访问请求中包含该cookie。在后续的访问中,服务器从客户发回的cookie中取出客户ID值并以此为索引从大表中取出该客户的会话信息,并进行维护处理。注意上述操作的前提:所用浏览器能够支持cookie的自动发送。,维护会话的方式-cookie技术,跟踪客户会话,4.1节,Servlet API 2.3对Cookie的支持Servlet API 2.3 提供了javax.servlet.http.Cookie类以支持cookie。它提供了对Cookie所有属性的设置与读取的方法。HttpServletResponse类中提供了一个方法用于向客户发送cookie:public
15、void addCookie(Cookiecookie);需要注意的是,在addCookie()前,应创建cookie对象并设置好该cookie的属性。HttpServletRequest类提供了一个方法用于查询客户cookie:public Cookie getCookies();注意:在一个客户请求中可能包含多个cookie对象,维护会话的方式-cookie技术,跟踪客户会话,4.1节,什么是cookie 一些网站会在您的计算机上的以小文本文件存储信息。这种文件称为cookie。,维护会话的方式-cookie技术,Hashtable ht;public void init(ServletC
16、onfig config)throws ServletException ht=new Hashtable();public void doGet(HttpServletRequest request,HttpServletResponse response)PrintWriter out=response.getWriter();Cookie cookies=request.getCookies();String sessionID=null;int visitCount=0;out.println(“URL Rewriting Servlet”);if(cookies!=null)for(
17、int i=0;iNo.of times visited=+Integer.toString(visitCount);out.println(Click here+to visit servlet again.);out.close();public void destroy()ht.clear();ht=null;,public class CookieServlet extends HttpServlet implements SingleThreadModel,跟踪客户会话,4.1节,利用cookie维护会话的优点有:目前大多数浏览器都可以识别和处理来自Web服务器的cookie,因此兼
18、容性较好,无论动态、静态文档都可以。因为Cookie可以保存在客户端的小文件中,因此cookie支持持久性的维持会话信息,哪怕浏览器关闭也可以维护。利用cookie维护会话的缺点有:cookie的名声不太好,个别网站可能在用户不知情的情况下采集客户个人信息。客户有可能因此关闭浏览器的cookie接收功能。并不是所有的浏览器都支持cookie。,维护会话的方式-cookie技术,跟踪客户会话,4.1节,隐藏窗体技术原理 HTML表单允许把一些字段信息隐藏起来,而在浏览器上不被显示出来。例如:使用隐藏窗体技术实现会话管理 这种方式的工作机制为:在用户第一次请求时,服务器在为客户准备的页面上添加一个
19、或多个隐藏表单,把一些要隐藏的信息如标识该客户的ID号存储在那里。当客户提交该表单时,这些信息会作为查询参数返回服务器,服务器可以利用HttpServletRequest对象的getParameter()方法读取出来。这样就达到了在服务器端维护会话信息持续的作用。,维护会话的方式-隐藏窗体技术,跟踪客户会话,4.1节,比比看 可以这样认为,同重写URL技术相比,隐藏窗体技术在表单参数中传递会话信息,而重写URL技术是在GET参数中传递会话信息。除了这点,二者并无根本区别。如:都属于非持久化会话方案都使用页面动态修改技术,因此不支持静态HTML代码编写方式很相似,维护会话的方式-隐藏窗体技术,跟
20、踪客户会话,4.1节,public void doGet(HttpServletRequest request,HttpServletResponse response)response.setContentType(text/html;charset=GBK);PrintWriter out=response.getWriter();out.println(URL Rewriting Servlet);int visitCount=0;String sessionID=request.getParameter(sessionID);if(sessionID=null)Random rand=
21、new Random();sessionID=Long.toString(rand.nextLong();visitCount=1;ht.put(sessionID,new Integer(visitCount);else visitCount=(Integer)ht.get(sessionID).intValue();visitCount+;ht.put(sessionID,new Integer(visitCount);out.println(Session ID=+sessionID);out.println(No.of times visited=+visitCount);out.pr
22、intln();out.println();out.println();out.println();out.println();,public class HiddenFormServlet extends HttpServlet implements SingleThreadModel,跟踪客户会话,4.1节,三种技术的小结 上面我们分别说明了如何使用URL重写、cookie和隐藏表单这三种方式来跟踪用户会话。不管采用何种方式,都应实现以下步骤:1、服务器必须为每个会话产生一个唯一的ID号2、在服务器和客户浏览器之间来回传递这个ID号,以维持会话3、服务器端维护根据ID号维护特定客户的会话信
23、息,维护会话的方式-隐藏窗体技术,Servlet中的解决方案-HttpSession,跟踪客户会话,4.1节,问题上述三种方式都是一些低级的API编程,程序员为了实现会话维护功能要做大量的编程工作,并且没有一个管理会话的功能框架。Servlet中的解决方案-HttpSessionServlet 2.3提供了一种较高级别的会话跟踪机制,可以减轻程序员的编程工作量。Servlet2.3规范定义了一个HttpSession接口:允许Servlet容器针对每一个用户建立一个HTTP会话(即HttpSession对象)每个HTTP会话都将会自动被赋予一个唯一的会话编号(session ID),而无需程序
24、员编程实现。HttpSession对象提供了和ServletContext对象相似的一组会 话属性的方法,可以很容易地在服务器端存放用户会话状态。,第四章 维护会话,跟踪客户会话 使用HttpSession对象维护会话信息 监视会话对象,HttpSession的基本概念会话与请求的关系HttpSession接口中的主要方法 存取HTTP会话属性终止HTTP会话,使用HttpSession对象维护会话信息,HttpSession的基本概念,用HttpSession对象维护会话,4.2节,用HttpSession对象维护会话,4.2节,在上一节中,我们学习了以下管理会话的方法URL重写Cookie
25、隐藏窗体但是上述方法都需要程序员进行大量的程序编写,十分繁琐。Servlet2.3 API规范定义了一个HttpSession接口:允许Servlet容器针对每一个用户建立一个HTTP会话对象(即HttpSession对象)该会话对象将会自动被赋予一个唯一的“会话编号”(session ID)同时,HttpSession对象提供了和ServletContext对象相似的一组存取会话属性的方法,这样就可以很容易的在服务器端存放用户会话状态。,使用HttpSession对象维护会话信息,HttpSession的基本概念,用HttpSession对象维护会话,4.2节,会话和请求之间的关系 会话维护
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 维护 会话
链接地址:https://www.31ppt.com/p-6108101.html