admin管理员组

文章数量:1571587

        虽然Session是保存在浏览器中的,对客户端是透明的,它的运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookies作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookies,它的值为该Session的id(也就是HttpSession.getId()的返回值),Seesion依据该Cookies来识别是否为同一个用户。

        该Cookie为服务器自动生成。同一个电脑的不同浏览器会生成不同的session。

        如果客户端浏览器将Cookie功能禁用或者客户端浏览器不支持cookie,JavaWeb应用提供了一种解决方案:URL地址重写。

        URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,例如:

<a href="<%=response.encodeURL("/index.jsp")%>">index.jsp</a>

如果是页面重定向URL,URL地址重写应该这样写:

response.encodeRedirectURL(httpServletRequest.getRequestURI())


本文标签: 浏览器session