第九章 Servlet中会话处理与过滤技术.pptVIP

  • 3
  • 0
  • 约6.8千字
  • 约 20页
  • 2018-10-15 发布于浙江
  • 举报
第九章 Servlet中会话处理与过滤技术.ppt

Servlet中的会话处理与过滤技术;;9.1 无状态的Http协议与响应模式 HTTP的无状态特性。在HTTP协议中,客户端打开一个连接,客户端发送请求,服务器响应请求。在关闭HTTP连接之后,Web容器不会记住这个连接的任何信息。当下一次请求发起时,Web容器会把这个请求看成一个信息的连接,与前面的请求无关。;9.2 会话跟踪技术 会话是客户端发送请求,服务器返回响应的连接时间段。由于HTTP是无状态协议,不能维持客户的上下文信息。因此采用了会话跟踪技术。三种典型客户端会话跟踪解决方案:Cookies、URL重写、隐藏表单域。服务器端采用了Session技术。;9.2.1 Cookies Cookie是通过客户端保持状态的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header); 有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。; Cookie的常用方法: 创建Cookie 通过Cookie的构造方法可以创建一个Cookie,格式如下: Cookie 对象名=new Cookie(String name,String value); 将Cookie传递给浏览器 通过response.addCookie(cookie对象)方法,可以将Cookie的数据和HTTP一起传递给客户端的浏览器,存储在客户计算机上。 读取Cookie及其名称和值 从客户端读取Cookie,需要采用请求对象调用getCookies()方法。该方法返回Cookie的对象数组,需要注意的是程序不能读取某个特定的Cookie,必须读取所有的Cookie。;Cookie[] cook=req.getCookies(); if(cook!=null){ for(Cookie c:cook){ out.println(font color=red size=8); out.println(c.getName()+-----+c.getValue()); out.println(/font); out.flush(); } ;读取和设置Cookie的有效期 getMaxAge()和set MaxAge():cookie不会一直在,他是有一定的存活时间,设置cookie在浏览器上存多少时间(以秒计),如果你给的是8,则在你的服务器上存活8秒。如果你给一个负数,表示cookie是临时的,浏览器关闭,Cookie就会消失,如果设置为0,表示浏览器删除相应的cookie。 c.setMaxAge(60*24*30);//设置该Cookie存活30天;9.2.2 URL重写 在servlet中,对超连接可以采用response.encodeURL()。进行url重写用response.sendRedirect(response.encodeURL(url))的好处就是他能将用户的session追加到网址的末尾,也就是能够保证用户在不同的页面时的session对象是一致的。 这样做的目的是防止某些浏览器不支持或禁用了COOKIE导致session跟踪失败。 9.2.3 隐藏表单域 HTML支持一种隐藏控件,例如: input type=hidden name=uid value=1001 当提交用户请求时,Web容器在Servlet的doPost()方法中,可以得到这个参数。另外,隐藏表单域应该包含在一个表单提交中,因而它并不是对所有的页面类型都适合。; 9.3 HttpSession的使用 Session会话,可以把浏览器与服务器的一次连接称为一个

文档评论(0)

1亿VIP精品文档

相关文档