在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户没有使用系统一定时间后,自动退出登录,销毁session。
具体设置很简单,方法有三种:
(1)在主页面或者公共页面中加入:
Java代码
session.setMaxInactiveInterval(900);
session.setMaxInactiveInterval(900);
或者:
Java代码
HttpSession hs=request.getSession();
hs.setMaxInactiveInterval(900);
HttpSession hs=request.getSession();
hs.setMaxInactiveInterval(900);
参数900单位是秒,即在没有活动15分钟后,session将失效。
这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器时间来测试,而不是客户端。
(2)也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置
Java代码
<session-config>
<session-timeout>15</session-timeout>
</session-config>
<session-config>
<session-timeout>15</session-timeout>
</session-config>这里的15也就是15分钟失效。
(3)直接在应用服务器设置,如果是tomcat,可以在tomcat目录下conf/web.xml中找到<session-config>元素,tomcat默认设置是30分钟,只要修改这个值就可以了。
在server.xml中定义context中如下定义:
Java代码
<Context path="/livsorder" docbase="/home/httpd/html/livsorder"
defaultSessionTimeOut="3600" isWARExpanded="true"
isWARValidated="false" isInvokerEnabled="true"
isWorkDirPersistent="false"
/>
<Context path="/livsorder" docbase="/home/httpd/html/livsorder"
defaultSessionTimeOut="3600" isWARExpanded="true"
isWARValidated="false" isInvokerEnabled="true"
isWorkDirPersistent="false"
/>需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低(3)(2)(1)
在一般系统中,也可能需要在session失效后做一些操作:
(1)控制用户数,当session失效后,系统的用户数减少一个等,控制用户数在一定范围内,确保系统的性能。
(2)控制一个用户多次登录,当session有效时,如果相同用户登录,就提示已经登录了,当session失效后,就可以不用提示,直接登录了。
那么如何在session失效后,进行一系列的操作呢?
这里就需要用到监听器了,即当session因为各种原因失效后,监听器就可以监听到,然后执行监听器中定义好的程序,就可以了。
监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法,自己可以继承这个类,然后分别实现。
sessionCreated指在session创建时执行的方法。
sessionDestroyed指在session失效时执行的方法。
给一个简单的例子:
Java代码
public class SessionListener implements HttpSessionListener{
public void sessionCreated(httpSessionEvent event){
HttpSession hs=event.getSession();
String id=hs.getId()+hs.getCreationTime();
SummerConstant.UserMap.put(id,Boolean.TRUE);//添加用户
}
public void sessionDestroyed(HttpSessionEvent event){
HttpSession hs=event.getSession();
String id=hs.getId()+hs.getCreationTime();
synchronized(this){
SummerConstant.USERNUM--;//用户数减一
SummerConstant.UserMap.remove(id);//从用户组中移除掉,用户组为一个map
}
}
}
public class SessionListener implements HttpSessionListener{
public void sessionCreated(httpSessionEvent event){
HttpSession hs=event.getSession();
String id=hs.getId()+hs.getCreationTime();
SummerConstant.UserMap.put(id,Boolean.TRUE);//添加用户
}
public void sessionDestroyed(HttpSessionEvent event){
HttpSession hs=event.getSession();
String id=hs.getId()+hs.getCreationTime();
synchronized(this){
SummerConstant.USERNUM--;//用户数减一
SummerConstant.UserMap.remove(id);//从用户组中移除掉,用户组为一个map
}
}
}然后只需要把这个监听器在web.xml中声明就可以了,例如:<listener>
Java代码
<listener-class>
com.summer.kernel.tools.SessionListener
</listener-class>
</listener>
分享到:
相关推荐
综上所述,处理Session的有效期主要涉及以下几个方面:在`web.xml`中配置全局有效期、通过Java Servlet动态设置有效期以及检查Session的有效性。开发者可以根据具体的应用场景灵活选择合适的方法。通过合理设置...
因此,本文将详细介绍两种无需重新安装即可解决Websphere Application Server 6.1许可证有效期问题的方法。 #### 方法一:快速解决办法 **步骤详解:** 1. **定位并删除was.license文件:** 首先,需要找到位于`IBM...
查看华为路由器的License有效期有以下几种情况: 1. **非商用永久License**:在已经激活非商用永久License的情况下,可以通过执行`display license state`命令来查看当前状态。例如,命令执行后显示“Info: Current...
公证书的有效期一般可以分为以下三种情况: 1. **明确规定了有效期的公证书**:这类公证书会在文件中明确规定其有效期。例如,如果一份贷款担保公证书中明确指出有效期为5年,则在此期间内该公证书具有法律效力。 ...
**点播有效期**是为那些只想观看某一个或几个特定影片的用户准备的。用户在选择点播服务后,可以根据自己的需求购买48小时或72小时的点播有效期。一旦用户开始播放,48小时或72小时的有效期就会开始计算。在此期间内...
在抢购场景下,拥有有效的Cookie可以帮助用户更快地加载页面,从而在竞争激烈的秒杀活动中占得先机。 本套资源包含三个关键部分:《抓取appck教程视频.mp4》是一个教学视频,详细指导用户如何操作软件进行Cookie的...
3. **Token刷新**:为了安全性,Token通常有有效期,过期后用户需要重新登录获取新的Token。也可以通过刷新Token的方式延长用户会话。 **第三种情况:基于Session ID的共享** 1. **集中式Session存储**:所有应用...
在电子商务系统中,优惠券是一种常用的促销手段,通过设置不同的优惠条件吸引用户消费。而优惠券的有效期管理是确保用户体验和商家利益的重要环节之一。本文将围绕“优惠券有效期”的核心内容进行详细解析,包括如何...
本文将对交通肇事罪中的几种特殊情况予以阐释,以帮助理解该罪名在实际应用中的复杂性和细节差异。 首先,针对共同犯罪的情形,当单位主管人员、机动车所有人或承包人指使肇事司机逃逸,并因此导致受害者因未得到...
标题提到的“对pfx文件延长签名时间”是指更新或续期已有的PFX证书,以便其签名有效期得以延长。 当一个PFX文件的签名时间即将到期时,这可能会导致一系列问题,比如软件或服务的用户可能因为证书过期而无法正常...
以下是关于合伙人股权退出机制的几种常见方式的详细说明: 1. 提前约定退出机制:这是建立公平股权退出的基础。在公司成立初期,所有合伙人应就何时、如何退出以及退出时股权如何处理达成共识。例如,可以规定在...
在当前的行业文档中,我们关注的焦点是“一种延长有效期的铅含量快速检测试纸及其制备方法”。这个主题涉及到环境科学、化学分析技术以及材料科学等多个领域,特别是对于食品安全和环境保护具有重要意义。铅是一种...
本篇文章将详细讨论在SSH项目开发中遇到的几种常见异常以及相应的解决方法。 一、连接失败 1. **错误提示:“Connection refused”**:这通常意味着目标服务器未监听SSH端口(默认22)。检查服务器的SSH服务是否...
根据提供的标题、描述、标签及部分内容,我们可以了解到这段信息主要涉及的是MyEclipse 6.5版本的注册码以及其有效期。接下来,我们将对MyEclipse 6.5这款软件进行详细介绍,并解释注册码的相关概念及其重要性。 ##...
由于项目的一个bug,导致好几个现网项目都出现了异常。 bug说明: oracle11g,静默安装后用户的密码有效期默认设置为180天,180天后密码将失效,oracle会提示要修改密码。 我们项目用的是jdbc连接oracle数据库,没法...
// 设置有效期 Response.Cookies.Add(cookie); ``` **获取Cookie值**: ```csharp if (Request.Cookies["param1"] != null) { string str = Request.Cookies["param1"].Value; } ``` #### 六、使用`Response....
对于cookie过期时间的设置,主要有以下两种情况: 1. 设置为非正数(0或负数):这种情况下,cookie信息存储在内存中,浏览器关闭后失效,但可能导致安全性问题,因为用户可能会长时间保持浏览器打开状态。 2. 设置...
以下是几种可以实施的密码管理措施: ##### 1. 禁止使用旧密码 为了防止用户重复使用相同的密码,可以通过配置PAM (Pluggable Authentication Modules) 来实现。具体步骤如下: ```bash sudo vi /etc/pam.d/system-...
本文将对开关电源电磁干扰的产生机理进行分析,并探讨几种有效的抑制措施。 开关电源电磁干扰的产生机理主要有以下几点: 1. 二极管的反向恢复时间引起的干扰:当整流二极管在正向导通切换到截止状态时,PN结中会...