Session的建立与销毁时机

  • 客户端第一次访问jsp文件,jsp被翻译成Servlet时会自动建立Session,此后客户端再次访问就会带着JSESSIONID过来。
  • 当客户端重启浏览器时,客户端的JSESSIONID被销毁(此时服务端的Session没有受影响),客户端再次访问浏览器没有带着JSESSIONID,服务端将再次为客户建立Session。
  • 在jsp文件page指令里设置session="false",客户端访问此jsp将不会建立Session。
  • 客户端访问Servlet时不会建立Session,只有在经过request.getSession()或是跳转到jsp文件时才建立Session。

tomcat默认session超时时间为30分钟,能够根据须要修改,负数或0为不限制session失效时间。这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。因此若是在调试程序,应该是修改服务器端时间来测试,而不是客户端。浏览器

<session-config>
<session-timeout>30</session-timeout>
</session-config>

经过Java代码设置tomcat

session.setMaxInactiveInterval(30*60); // 以秒为单位,即在没有活动30分钟后,session将失效

服务器端调用了HttpSession的invalidate()方法。服务器

退出销毁session的Action方法
  /**
     * 用户退出的方法
     */
    public String quit(){
        // 销毁session
        ServletActionContext.getRequest().getSession().invalidate();
        return "quit";
    }

 

注意!若是服务器正常关闭不会销毁session

服务器正常关闭不销毁session,()session会存到咱们的硬盘中,也就是咱们正常的点击stop server()会在tomcat的work的Catalina\localhost\项目名称下面生成一个文件SESSIONS(执行序列化),当服务器再次启动的时候会加载此文件(反序列化),假若没有实现序列化接口(Serializable)可能会报错由于序列化和反序列化会依据一个id:jsp

private static final long serialVersionUID = 1L;
相关文章
相关标签/搜索