session有效时间问题

session就是会话,指的是用户浏览某个网站,从进入网站到关闭浏览器,这个时间就是session的时间,session在我们的开发中非常重要,session可以说是一个时间概念

需要强调的是:session要求不同的用户,不同的浏览器,小明在甲浏览器上的session和乙浏览器上的session是不同的,同样的,小明在甲浏览器上的session和小王在甲上的浏览器上的session也是不一样的。

最近在写一个项目时,需要判断session是否过期来提示用户登录失效,使用request.getSession(false)来判断session是否为null,得到的值一直不为null。

首先插一下getSession()这个方法:

(1) getSession(true) 如果当前session不为null,会返回该session,如果为null,会创建一个session也就是说这个方法和getSession()是等效的

(2) getSession(false),当session不为null时,返回该session,如果session为null,则该方法会返回null,

言归正传,我首先在web.xml中设置了session的有效时间,便于我测试:

<session-config>
    <session-timeout>1</session-timeout>
</session-config>
这个 1 指的是1分钟,我设置了session有效时长为 1分钟

然后在后台是这样写的:

HttpSession session = request.getSession();
System.out.println("上一次访问session的时间"+new Date(session.getLastAccessedTime()));
System.out.println("session的有效时长:"+session.getMaxInactiveInterval());
if(session==null){
	System.out.println("session为空");
}

得到的有效时间是60秒,得到的上一次访问时间也超过了一分钟,然而就是不能打印出session为空这句话,由此判断session不为空,但是时间已经超过了一分钟,百度了下知道了原因:

jsp页面会被tomcat编译成class文件,在jsp中首先调用了getSession()方法,已经创建了一个session,通过jsp再去访问servlet或者action,request.getSession(false)是不能得到null的,我的解决方法是:

在jsp页面中加入

<%@ page session="false"%>

来禁止jsp自动创建session。





  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值