内容包括:
必备知识:
会话跟踪实现主要有3种方式:
a. SSL 这种方式我们 先不研究
b. cookies
会话跟踪 的实现 可以基于 会话cookie,这种cookie 是在浏览器内存中的 名字必须叫jsessionid, 如果浏览器禁用了cookie 那服务器端就不能跟踪会话了 ,就要采用url重写
如果客户端没禁止cookie ,也可以吧cookie 保存在客户端的硬盘上 ,这种cookie是持久cookie ,用户在每次访问一个url的时候 浏览器会吧这个url域下的cookie发到服务器上,服务器根据自己关心的cookie的名字来跟踪会话。迅雷看看记录播放历史就是这样干的
c. URL 重写
就是在所有的页面跳转上加上 encodeURL() 或者 encodeRedirectURL(),之中方式是由于容器在处理动态页面或者action的时候会自动添加 ;jsessionid=?????? 的字符串 来标示会话,对于静态页面就无能为力了,不过我们可以吧静态页面改造成动态页面来解决 比如吧11.htm 改成tt.jsp
测试项目结构:
例子1:使用会话cookie 和URL重写 追踪会话 需要的3个servlet
LoginServlet 使用会话cookie 会话跟踪的servlet
GreetServlet 使用会话cookie 登陆后打印会话信息
LogoutServlet 使会话失效
结论:如果客户端没禁止cookie 会话跟踪成功,如果客户端禁止了cookie.则每次都是新的会话,会话跟踪失败
iE 禁止cookie
访问 登陆servlet 看到IE 下面的提示: 红色的部分标示IE拒绝了回话cookie
对于这种方式我们就只好用URL重写了 ,重写以后再访问登陆页面 发现后面已经有了服务器生成的 jsessionid, 浏览器和服务器就可以使用这个标识来传递会话了
例子2:使用持久cookie(保存在用户的硬盘上)追踪会话 需要的2个 servlet
LoginServlet2
GreetServlet2
附件中试测试源码