关闭浏览器,和浏览器禁用cookie时Session处理的方法

时间:2025-03-27 20:16:27

这是看老方的视频体会。一直以来看书以为用户访问一个网站,服务器就会自动帮你创建Session。现在才知道不是的。

Session什么时候生?

并不是你去访问网站时,而是遇到了HttpSeesion session=()这段代码。(没有就给你创建一个)

什么时候死?

并不是你关闭浏览器或者去访问其他的网站的时候Session就死了,而是30分钟没有人用就死了。

(当然这时间可以在在里配置)

<session-config>

          <session-timeout>(你想要的时间,分钟为单位)</session-timeout>

</session-config>

现在粗略讲下服务器是如何实现一个session为一个用户浏览器服务的?

浏览器A访问servlet1(HttpSeesion session1=()),服务器为其创建一个SeesionID,Servlet 容器又将 Session ID 作为 Cookie 保存在客户的浏览器中。当浏览器A访问servlet2时,客户端就把cookie的里的Session ID带过来,服务器也把之前创建的sessionID带过来,两者进行匹配。


现在问题是:

1,如果用户万一关闭了浏览器,session怎么办呢?

可以设置cookie的最大生命周期,(下面是设置30分钟)

……

HttpSeesion session=();

String Sessionid=();

Cookie cookie=new Cookie("JSEESIONID",sessionid);

("/(网站的路径)");

(30*60);

(cookie);

……

2,如果用户浏览器禁用了cookie,SessionID怎么带过去?

先说说HttpSeesion session=();这段代码。

他获取SessionID时,先看看cookie有木有带SessionID过来,再看看超链接有木有带SessionID过来。如果两者都没有,它就创建一个Seesion。带过来了就获取服务器之前创建的SessionID。那么如果浏览器禁用了cookie了,想Seesion还可以用,就要重写URL

HttpServletResponse 接口提供了重写 URL 的方法:public encodeURL( url),此方法能将用户的SessionID追加到网址的末尾,

   <a href=“<%=(““)%>“>

如果是重定向,就response.sendRedirect((""));

这样即使浏览器禁用了cookie,session还是可以用 了。