- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Cookie管理
第六章 会话跟踪 会话跟踪 会话跟踪技术 用户授权 URL 重写 其中,uid=1008name=zhangwei用来标识该用户,每次该用户的请求都会多发送两个参数uid=1008name=zhangwei,通过这两个参数可以检索该用户关联的其它数据。 URL 改写是一种好的解决方案,特别是在用户禁用Cookie的情况下,它是最佳解决方案,但也有问题: 必须确保将信息附加到每个引用的网站的 URL; 附加参数带来了隐私问题,也许不希望所跟踪的 实际数据是可见的; URL重写跟踪用户会话 当客户端禁用了Cookie后,基于cookie的会话跟踪机制就消失了.可以使用URL重写机制跟踪用户会话 演示实例4 隐藏表单域 将会话跟踪字段的隐藏表单域添加到 HTML 页面,但是不会显示在客户端浏览器中 Cookie 2-1 Cookie 2-2 Cookie 也是会话跟踪的最常用方法,Cookie是Web服务器发送给Web浏览器的内容较小的纯文本信息,以文本文件的形式存放在客户端的计算机中,这些Cookie一般用于保存用户的访问状态,当用户再次访问同一个网站的时候,浏览器会将这些Cookie信息发送回服务器,使得服务器能够恢复用户上一次的访问状态。使用Cookie的根本目的是为了在用户访问期间实现不同页面之间的数据传输,以解决HTTP无状态的问题。 Servlet API 提供了一个Cookie 类,封装了对Cookie 的一些操作。Servlet 可以创建一个新的Cookie,设置它的关键字、值及有效期等属性,然后把Cookie 设置在HttpServletResponse 对象中发回浏览器。 1.3.1 Cookie类的方法 1.3.2 HttpServletRequest 该接口继承了ServletRequest接口,在熟练掌握ServletRequest接口的方法基础上,还需要进一步掌握以下1个方法: public Cookie[] getCookies() 返回一个数组,该数组包含这个请求中当前的所有Cookie。如果这个请求中没有Cookie,返回一个空数组。 1.3.2Cookie的工作原理 客户的HTTP 请求到达服务器。 服务器创建Cookie,并作为响应头域的一部分返回用户。 浏览器收到包含Cookie 的响应后,会把Cookie 的内容用“关键字/值” 对的形式写入到一个客户端专为存放Cookie 的文本文件中。 浏览器会把Cookie 及随后产生的请求发给相同的服务器, 服务器可以再次读取Cookie 中存放的Cookie 上述处理过程在实际程序实现中会经常会遇到,为使用方便,可以实现一个较通用的getCookieValue方法。只要给出Cookie对象数组、Cookie名字和默认值,getCookieValue方法就会返回匹配指定名字的Cookie值,如果找不到指定Cookie,则返回默认值。getCookieValue通过循环依次访问Cookie对象数组的各个元素,寻找是否有指定名字的Cookie,如找到,则返回该Cookie的值;否则,返回参数中给出的默认值。getCookieValue能够在一定程度上简化Cookie值的提取。下面是其代码。 Class ServletUtilities {Public static String getCookieValue (Cookie[] cookies,String cookieName,?String defaultValue) {? for(int i=0; icookies.length; i++) {? Cookie cookie=cookies[i]; if(cookieName.equals(cookie.getName()))? return(cookie.getValue());? }? return(defaultValue);? } } 综合实例2 Login.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Login extends HttpServlet { public void service(HttpServletRequest request,
文档评论(0)