session会话跟踪的一个小例子

 

 

 内容包括:

 

 

  必备知识:

 

   会话跟踪实现主要有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

 

 

测试项目结构:

 

 session会话跟踪的一个小例子_第1张图片

 

例子1:使用会话cookie 和URL重写 追踪会话 需要的3个servlet

LoginServlet  使用会话cookie 会话跟踪的servlet

GreetServlet  使用会话cookie 登陆后打印会话信息

LogoutServlet  使会话失效

 

结论:如果客户端没禁止cookie 会话跟踪成功,如果客户端禁止了cookie.则每次都是新的会话,会话跟踪失败

 

iE 禁止cookie

 

session会话跟踪的一个小例子_第2张图片

 

访问 登陆servlet 看到IE 下面的提示: 红色的部分标示IE拒绝了回话cookie

 

session会话跟踪的一个小例子_第3张图片

 

 

对于这种方式我们就只好用URL重写了 ,重写以后再访问登陆页面 发现后面已经有了服务器生成的 jsessionid, 浏览器和服务器就可以使用这个标识来传递会话了

 

session会话跟踪的一个小例子_第4张图片

 

例子2:使用持久cookie(保存在用户的硬盘上)追踪会话 需要的2个 servlet 

 

LoginServlet2

GreetServlet2 

 

 

 附件中试测试源码

 

 

 

你可能感兴趣的:(jsp,浏览器,servlet,IE)