JAVAweb开发课件96392.ppt
《JAVAweb开发课件96392.ppt》由会员分享,可在线阅读,更多相关《JAVAweb开发课件96392.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章Servlet容器模型本章内容3.1 ServletContext接口3.2 会话管理3.3 Cookie及其应用3.1 ServletContext接口3.1.1得到ServletContext引用3.1.2获取应用程序的初始化参数3.1.3通过ServletContext对象获得资源3.1.4登录日志3.1.5用RequestDispatcher实现请求转发3.1.6使用ServletContext对象存储数据3.1.7检索Servlet容器的信息3.1.1 得到ServletContext引用Web容器在启动时会加载每个Web应用程序,并为每个Web应用程序创建一个唯一的Servl
2、etContext实例对象,该对象一般称为Servlet上下文对象。Servlet可以用javax.servlet.ServletContext对象来获得Web应用程序的初始化参数或Servlet容器的版本等信息,它也可以被Servlet用来与其他的Servlet共享数据。在Servlet中有两种方法得到ServletContext引用。1.直接调用getServletContext()方法,ServletContextcontext=getServletContext();2.先得到ServletConfig引用,再调用它的getServletContext()方法,ServletConte
3、xtcontext=getServletConfig().getServletContext();3.1.1 得到ServletContext引用3.1.2 获取应用程序的初始化参数ServletContext对象是在Web应用程序装载时初始化的。可以使用下面两个方法检索Servlet上下文初始化参数:publicStringgetInitParameter(Stringname):返回指定参数名的字符串参数值,如果参数不存在则返回null。publicEnumerationgetInitParameterNames():返回一个包含所有初始化参数名的Enumeration对象。应用程序初始化
4、参数应该在web.xml文件中使用元素定义,而不能通过注解定义。下面是一个例子:adminE3.1.2 获取应用程序的初始化参数在Servlet中可以使用下面代码检索adminEmail参数值。ServletContextcontext=getServletContext();Stringemail=context.getInitParameter(adminEmail);3.1.2 获取应用程序的初始化参数3.1.3通过ServletContext对象获得资源publicURLgetResource(Stringpath):返回由给定路径指定的资源的URL对象。publicInputStre
5、amgetResourceAsStream(Stringpath):如果想从资源上获得一个InputStream对象,这是一个简洁的方法,它等价于getResource(path).openStream()。publicStringgetRealPath(Stringpath):返回给定的相对路径的绝对路径。程序3.1FileDownloadServlet.java3.1.4 登录日志使用ServletContext接口的log()方法可以将指定的消息写到服务器的日志文件中,该方法有下面两种格式。publicvoidlog(Stringmsg):参数msg为写到日志文件中的消息。publicv
6、oidlog(Stringmsg,Throwablethrowable):将msg指定的消息和异常的栈跟踪信息写入日志文件。3.1.5 用RequestDispatcher实现请求转发使用ServletContext接口的下列两个方法也可以获得RequestDispatcher对象,实现请求转发。RequestDispatchergetRequestDispatcher(Stringpath):参数path表示资源路径,它必须以“/”开头,表示相对于Web应用的文档根目录。RequestDispatchergetNamedDispatcher(Stringname):参数name为一个命名的S
7、ervlet对象。Servlet和JSP页面都可以通过Web应用程序的DD文件指定名称。3.1.6 使用ServletContext对象存储数据使用ServletContext对象也可以存储数据,该对象也是一个作用域对象作用域对象,它的作用域是整个应用程序。在ServletContext接口中也定义了4个处理属性的方法.publicvoidsetAttribute(Stringname,Objectobject):将给定名称的属性值对象绑定到上下文对象上。publicObjectgetAttribute(Stringname):返回绑定到上下文对象上的给定名称的属性值,如果没有该属性,则返回n
8、ull。publicEnumerationgetAttributeNames():返回绑定到上下文对象上的所有属性名的Enumeration对象。publicvoidremoveAttribute(Stringname):从上下文对象中删除指定名称的属性。3.1.6 使用ServletContext对象存储数据3.1.7 检索Servlet容器的信息getServerInfo()方法返回Servlet所运行的容器的名称和版本。getMajorVersion()和getMinorVersion()方法可以返回容器所支持的ServletAPI的主版本号和次版本号。getServletContext
9、Name()方法返回与该ServletContext对应的Web应用程序名称,它是在web.xml中使用元素定义的名称。3.2 会话管理在很多情况下,Web服务器必须能够跟踪客户的状态。跟踪客户状态可以使用数据库实现,但在Servlet容器中通常使用会话机制维护客户状态。3.2 会话管理3.2.1理解状态与会话3.2.2会话管理机制3.2.3HttpSessionAPI3.2.4使用HttpSession对象3.2.5会话超时与失效3.2.1 理解状态与会话协议记住用户及其请求的能力称为状态(state)。按这个观点,协议分成两种类型:有状态的和无状态的。HTTP协议是一种无状态的协议,HTT
10、P服务器对客户的每个请求和响应都是作为一个分离的事务处理。服务器无法确定多个请求是来自相同的客户还是不同的客户。这意味着服务器不能在多个请求中维护客户的状态。会话(session)是一个客户与服务器之间的不间断的请求响应序列。当一个客户向服务器发送第一个请求时就开始了一个会话。对该客户之后的每个请求,服务器能够识别出请求来自于同一个客户。当客户明确结束会话或服务器在一个预定义的时限内没从客户接收任何请求时,会话就结束了。当会话结束后,服务器就忘记了客户以及客户的请求。3.2.1 理解状态与会话3.2.2 会话管理机制容器通过HttpSession接口抽象会话的概念。该接口由容器实现并提供了一个
11、简单的管理用户会话的方法。3.2.2 会话管理机制(1)当客户向服务器发送第一个请求时,服务器就可以为该客户创建一个HttpSession会话对象,并将请求对象与该会话对象关联。服务器在创建会话对象时为其指定一个唯一标识符,称为会话ID,它可作为该客户的唯一标识。3.2.2 会话管理机制(2)当服务器向客户发送响应时,服务器将该会话ID与响应数据一起发送给客户,这是通过Set-Cookie响应头实现的,响应消息可能为:HTTP/1.1200OKSet-Cookie:JSESSIONID=61C4F23524521390E70993E5120263C6Content-Type:text/html
12、这里,JSESSIONID的值即为会话ID,它是32位的十六进制数。3.2.2 会话管理机制(3)客户在接收到响应后将会话ID存储在浏览器的内存中。当客户再次向服务器发送一个请求时,它将通过Cookie请求头把会话ID与请求一起发送给服务器。这时请求消息可能为:POST/helloweb/selectProduct.doHTTP/1.1Host:Cookie:JSESSIONID=61C4F23524521390E70993E5120263C63.2.2 会话管理机制(4)服务器接收到请求后,从请求对象中取出会话ID,在服务器中查找之前创建的会话对象,找到后将该请求与之前创建的ID值相同的会话
13、对象关联起来。上述过程的第(2)到第(4)步一直保持重复。如果客户在指定时间没有发送任何请求,服务器将使会话对象失效。一旦会话对象失效,即使客户再发送同一个会话ID,会话对象也不能恢复。3.2.2 会话管理机制通过会话机制可以实现购物车应用。当用户登录购物网站时,Web容器就为客户创建一个HttpSession对象。实现购物车的Servlet使用该会话对象存储用户的购物车对象,购物车中存储着用户购买的商品列表。当客户向购物车中添加商品或删除商品时,Servlet就更新该列表。当客户要结账时,Servlet就从会话中检索购物车对象,从购物车中检索商品列表并计算总价格。一旦客户结算完成,容器就会关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVAweb 开发 课件 96392
限制150内