<pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif;">当浏览器支持cookie的时候,设置服务器端的session周期是不够的,因为浏览器是以会话周期为限保存JSESSIONID的。如果如果想长时间的真正保存session需要设置服务器端的</span>
session期限,同时设置浏览器端的cookie为
JSESSIONID的期限,才能在浏览器和服务器一致。(每次浏览器访问服务器的时候,都会传递cookies给服务器,而JSESSIONID代表session在cookie中对应项,服务器会在有JSESSIONID的cookie下,使用这次SESSIONID生成还原过去的session,如果其不存在,就创建新的session和JSESSIONID的cookie)
服务器端设置session的过期时间:(这保证该时间段内服务器不关闭的情况下有效吧?)
session.setMaxInactiveInterval(5*60);
浏览器端通过服务器端的cookie设置,使其浏览器session的周期不会像下面这样:
脚本可访问:否(仅 Http)
已创建: 2016年6月7日星期二 上午10:41:59
过期时间:浏览会话结束时
而是设置成:
脚本可访问:是
已创建:2016年6月7日星期二 上午10:39:48
过期时间:2016年6月12日星期日 上午10:39:48
这样也许服务器关闭,服务器开启后也能访问到原来的session吧?
public void persistenceClientSession(HttpServletResponse response,HttpSession session,int savedSeconds){
Cookie cookie = new Cookie("JSESSIONID",session.getId());
cookie.setPath("/");
cookie.setMaxAge(savedSeconds);//单位:s
response.addCookie(cookie);
}