ch3Servlet容器模型_第1页
ch3Servlet容器模型_第2页
ch3Servlet容器模型_第3页
ch3Servlet容器模型_第4页
ch3Servlet容器模型_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ch3Servlet容器模型第三章第三章 Servlet容器模型容器模型ch3Servlet容器模型容器模型课程目标课程目标 n会话的基本原理及其常用方法会话的基本原理及其常用方法n了解了解HttpSession原理原理n掌握如何使用掌握如何使用HttpSession会话管理会话管理nServletContext接口接口ch3Servlet容器模型容器模型1、会话管理的基本原理、会话管理的基本原理n基本原理基本原理n使用隐藏域使用隐藏域n使用使用Cookie类类n使用使用URL重写重写ch3Servlet容器模型容器模型会话管理的基本原理会话管理的基本原理nHttp协议为无状态通信协议,但协议

2、为无状态通信协议,但Web应用程序应用程序的有些功能必须要多次请求来完成,这种记得的有些功能必须要多次请求来完成,这种记得此次请求与之后请求关系的方式称为会话管理此次请求与之后请求关系的方式称为会话管理。n实现会话管理的几种方式实现会话管理的几种方式q使用隐藏域使用隐藏域q使用使用URL重写重写qHttpSessionq使用使用Cookiech3Servlet容器模型容器模型使用隐藏域使用隐藏域n隐藏域,就是将上页的信息作为隐藏域传递给隐藏域,就是将上页的信息作为隐藏域传递给下一页下一页n关键代码关键代码ch3Servlet容器模型容器模型使用使用URL重写重写nURL重写,就是用重写,就是用

3、Get请求参数的应用,当服请求参数的应用,当服务器响应浏览器上一次请求时,将某些相关信务器响应浏览器上一次请求时,将某些相关信息用超链接方式响应给浏览器,超链接中包括息用超链接方式响应给浏览器,超链接中包括请求参数信息请求参数信息nout.println(“+hello+”);ch3Servlet容器模型容器模型2、HttpSession的会话管理的会话管理n会话原理机制:会话原理机制:HttpSessionnHttpSession对象的对象的IDn如何使用如何使用HttpSession对象对象nHttpsession对象的生命周期对象的生命周期ch3Servlet容器模型容器模型2.1 会话

4、原理机制:会话原理机制:HttpSessionHttpSessionHttpSession由由TomcatTomcat服务器负责创建,服务器负责创建,sessionsession是实现了是实现了HttpSessionHttpSession接口类的一个接口类的一个实例实例 HttpSessionHttpSession对象用来记录客户与服务器的对象用来记录客户与服务器的连接信息连接信息ch3Servlet容器模型容器模型2.2 HttpSession对象的对象的ID当客户首次访问当客户首次访问WEBWEB应用程序时,应用程序时,TomcatTomcat服务器创建服务器创建一个一个Httpsessi

5、onHttpsession对象,存放各个页面提交的信息;对象,存放各个页面提交的信息;HttpsessionHttpsession对象被分配了一个对象被分配了一个StringString类型的类型的IDID,TomcatTomcat服务器将服务器将IDID发送到客户端,存放在客户的发送到客户端,存放在客户的CookieCookie中;中;在会话期内,同一用户在同一在会话期内,同一用户在同一WebWeb服务目录中的各个服务目录中的各个页面的页面的Httpsession对象对象是相同的;是相同的;不同用户的不同用户的Httpsession对象对象互不相同,具有不同的互不相同,具有不同的IDID举例

6、:举例:ch3Servlet容器模型容器模型2.3 2.3 如何使用如何使用HttpSession对象对象n利用利用HttpsessionHttpsession对象存储数据对象存储数据(1)public void setAttribute(String key,Object obj)(1)public void setAttribute(String key,Object obj) 将参数将参数ObjectObject指定的对象指定的对象objobj添加到添加到sessionsession对象中,对象中,并为添加的对象指定了一个索引关键字,如果添加并为添加的对象指定了一个索引关键字,如果添加的

7、两个对象的关键字相同,则先前添加的对象被清的两个对象的关键字相同,则先前添加的对象被清除。除。(2 2)public public ObjectObject getAttibute(String key) getAttibute(String key) 获取获取sessionsession对象含有的关键字是对象含有的关键字是keykey的对象。由于的对象。由于任何对象都可以添加到任何对象都可以添加到sessionsession对象中,因此用该方对象中,因此用该方法取回对象时,应强制转化为原来的类型。法取回对象时,应强制转化为原来的类型。ch3Servlet容器模型容器模型2.3 2.3 如何使

8、用如何使用HttpSession对象对象(3 3)public Enumeration getAttributeNames()public Enumeration getAttributeNames() session session对象调用该方法产生一个枚举对象,该枚对象调用该方法产生一个枚举对象,该枚举对象使用举对象使用nextElemets()nextElemets()遍历遍历sessionsession中的各个中的各个对象所对应的关键字。对象所对应的关键字。( (4)public void removeAttribute(String name)4)public void remove

9、Attribute(String name) session session对象调用该方法移掉关键字对象调用该方法移掉关键字keykey对应的对对应的对象象 举例:举例:main.jsp, food.jsp,main.jsp, food.jsp,loginServlet.java,foodCount.javaloginServlet.java,foodCount.javach3Servlet容器模型容器模型举例:购物车举例:购物车nloginServlet.java: 获取名字存入获取名字存入session对象对象session.setAttribute(“customerName”,name

10、);nfoodCount.java: /选取各种食品存入选取各种食品存入session对象对象String foodName = request.getParameterValues(choice); if(foodName!=null) for(int k=0;kfoodName.length;k+) session.setAttribute(foodNamek,foodNamek); ch3Servlet容器模型容器模型举例:购物车举例:购物车n/显示姓名和所选商品显示姓名和所选商品Enumeration enumGoods=session.getAttributeNames();out.

11、println(购物车中的商品:购物车中的商品:);while(enumGoods.hasMoreElements() String key= (String) enumGoods. nextElement() ;String goods=(String) session. getAttribute(key);if(!(goods.equals(personName) out.println(goods+); ch3Servlet容器模型容器模型思考并练习思考并练习n重新选购时如何能够将原来的选购记录取消?重新选购时如何能够将原来的选购记录取消?n能够显示价钱,并能够结账计算价钱,要如何能够显

12、示价钱,并能够结账计算价钱,要如何进行改进?进行改进?n按照订单的一般设计,如果还能够选择件数、按照订单的一般设计,如果还能够选择件数、折扣等,又要如何设计?(留待以后的章节来折扣等,又要如何设计?(留待以后的章节来讨论)讨论)ch3Servlet容器模型容器模型2.4 session对象的生命期限对象的生命期限n从用户开始连接从用户开始连接Web服务器到中断与服务服务器到中断与服务器的连接器的连接n发呆状态:两次请求的最大间隔时间,可发呆状态:两次请求的最大间隔时间,可通过通过conf文件夹下的文件夹下的web.xml修改修改n设置生命周期的相关方法设置生命周期的相关方法qinvalidat

13、e():():session失效失效qgetCreationTime():创建对象的时间():创建对象的时间ch3Servlet容器模型容器模型2.5 URL重写重写nsession对象与客户对应关系的建立依赖于客对象与客户对应关系的建立依赖于客户端浏览器是否支持户端浏览器是否支持Cookie。n可通过可通过URL重写实现重写实现Session对象的唯一性,对象的唯一性,将将ID在页面间传递过去在页面间传递过去qString str= response.encodeRedirectURL (地地址址 );q连接目标改成连接目标改成ch3Servlet容器模型容器模型3 使用使用CookienC

14、ookie是浏览器存储信息的一种方式,服务器响应浏览是浏览器存储信息的一种方式,服务器响应浏览器的器的set-cookie标头,浏览器收到标头与数值后,会将其标头,浏览器收到标头与数值后,会将其以文件形式存储在计算机上,这个文件就是以文件形式存储在计算机上,这个文件就是CookienCookie的常见方法的常见方法q新建新建Cookiepublic Cookie(String name,String value)Cookie cookie=new Cookie(“Cookie”,”Catme”);/新建新建Cookie q设置设置Coookie的最大存活时间的最大存活时间,单位为秒,如果是负值

15、,表示永不存储,单位为秒,如果是负值,表示永不存储,0表示表示删除删除Cookiepublic void setMaxAge(int expiry)cookie.setMaxAge(7*24*60*60); /设置一个星期的最大存活设置一个星期的最大存活n向客户端发送向客户端发送Cookie对象对象response.addCookie(cookie);ch3Servlet容器模型容器模型使用使用Cookien举例举例n向客户端发送向客户端发送Cookie对象对象举例:举例:SendCookieServlet.javan从客户端读取从客户端读取Cookie对象(单个)对象(单个)举例:举例:Re

16、adCookieServlet.javan从客户端读取从客户端读取Cookie对象(全部)对象(全部)举例:举例:ReadAllCookieServlet.javach3Servlet容器模型容器模型使用使用Cookien自动登录自动登录n举例:举例:login.jsp 登陆页面登陆页面CheckUser.java 判断是否登陆页面,依据此思想可以写一个过判断是否登陆页面,依据此思想可以写一个过滤器,匹配给所有需要登陆才能访问的页面。滤器,匹配给所有需要登陆才能访问的页面。ch3Servlet容器模型容器模型Servlet接口接口nServlet可以使用可以使用javax.servlet.Se

17、rvletContext对象来获对象来获得得Web应用程序的初始化参数及其相关信息。应用程序的初始化参数及其相关信息。n具体具体APIq得到得到ServletContext引用引用ServletContext context=getServletContext()ServletContext context=getServletConfig().getServletContext()q获得应有程序初始化参数获得应有程序初始化参数,即即web.xml中设置的信息中设置的信息上下文初始化参数上下文初始化参数public String getInitParameter(String name)q获得资源获得资源:getResource()和和getResourceAsStream(),访问任何,访问任何资源而不必关心资源所在的位置。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论