关闭

JSP会话跟踪技术介绍

234人阅读 评论(0) 收藏 举报

1  URL 重写
    即在URL后通过?的形式传参,可以用来在多个页面共享数据和sessionID。例如 index.jsp?name=guoguo
    它是在客户端浏览器禁用Cookie或不支持Cookie情况下使用的
  
2 隐藏域
    即通过表单中隐藏域传递数据的方式,达到在多页面共享数据的。
  例如  <form>
           <input type="hidden" name="uname" value='guoguo'>
         </form>

  无论是URL重写还是隐藏域传值,都必须使用request.getParameter("")方法来取值,这正是他们的缺点,即共享数据的后期处理较麻烦。

3 Cookie
   默认情况下,服务器第一次回应客户端时就把sessionID保存在客户端的Cookie中,浏览器第二次发起请求时,请求头信息中就包含上次的sessionID,服务器就会根据这个sessionID判读这两次是否是同一个客户的访问。
    当然,我们也可以利用他的这个特性,人为的在Cookie中保存一些其他信息,比如保存用户名和密码。第一次请求登陆时服务器就把你的密码保存在客户端的Cookie中,当第二次登陆时,你的请求头就会包含上次保存的Cookie信息,这样服务器就会把它读出来直接显示在密码框中。

 A  是否保存信息到Cookie中,是有服务器决定的。通过如下方法实现
   
    Cookie  c=new Cookie("key","value");
    c.setMaxAge(2000); //必须设置最大存活时间,否则不会保存硬盘中
    response.addCookie( c );
 
 B 第二次登陆时,服务器要检查是否有Cookie信息  ,如下:
     Cookie [ ] cc= request.getCookies();
     for(int i=0; cc!=null && i<cc.length; i++)
     {
       if( cc[i].getNname.equals("key") ) //Key是你保存是取到键名
         {
                       String v= cc[i].getValue();
                      //这个V就是你保存的值了
         }
    }


4 session
   session是页面共享数据的最佳方案,当客户端第一次请求服务器,服务器就创建一个session对象,同时分配一个sessionID,并保存在客户端Cookie中,以后每次请求服务器就是那Cookie中的sessionID和session对象中ID对比来确定是否是同一个客户端的。如果相等的,那么这个session对象就可以在在当前页面使用。否则就会重新创建一个session对象。
    如果你在第一次请求时,存放数据在session对象中,那么下次请求时自然就能取到,因为两次请求的sessionID一致。
    这种状态持续到浏览器关闭为止。

 


   

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5846次
    • 积分:98
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条