java中会话跟踪的实现

1、java中会话跟踪的实现方式分三种:

(1)使用Session:HttpServletRequest.getSession()方法获取或者创建一个HttpSession,使用HttpSession.setAttribute/getAttribute方法实现会话范围内的数据存取,对链接和重定向语句中的URL无需调用encodeURL()或encodeRedirectURL()方法进行编码。SessionID的传递借助Cookie实现。

(2)使用URL重写:对链接和重定向语句中的URL调用encodeURL()或encodeRedirectURL()方法进行

编码,SessionID自动作为请求URL的一部分发送到服务器。

/ 实际情况下,为了安全,客户端有可能会禁用Cookie,这样就无法使用Session机制了,而只能使用编码URL的方式。事实上可以将前两种方法结合起来应用,即使用Session对象,同时也对链接和重定向语句中的URL进行编码。这样程序在执行时,首先判断当前的Servlet是否已经执行了HttpSession的invalidate方法,如果已经执行了,直接返回参数URL。接着判断客户端是否禁用了

Cookie,如果没有禁用,则直接返回参数URL,如果禁用了Cookie,则在参数URL中附加SessionID,返回编码后的URL。

(3)使用Cookie而不用Session:使用HttpServletResponse接口的addCookie方法实现向客户端发送Cookie,使用getCookies方法从请求数据中获取Cookie。保存Cookie对象的关键在于setMaxAge方法,如果要删除Cookie,可以将时间值设置为0,如果时间值为负数,则当客户端浏览器关闭时,Cookie将会被删除(Cookie保存在浏览器进程中?)。如果设置时间为正数,Cookie将会被保存到客户机硬盘上。Cookie在构造的时候存在一个唯一标识,服务器可以根据该标识遍历客户端发送过来的Cookies实现会话。

2、会话跟踪使用的Cookie在浏览器关闭后就删除了,不能在多个浏览器进程间共享。

3、保存在硬盘上的Cookie可以在多个浏览器进程间共享。

4、Session对象在服务器上创建,保存在服务器内存中,通常采用散列表来存储,例如Tomcat的Session实现采用HashMap对象存储属性名和属性值。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值