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代码设置

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

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

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

 

注意!如果服务器正常关闭不会销毁

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

private static final long serialVersionUID = 1L;

转载于:https://www.cnblogs.com/aikf/p/10117925.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值