在一般系统登录后,都会设置一个当前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>
分享到:
相关推荐
由于项目的一个bug,导致好几个现网项目都出现了异常。 bug说明: oracle11g,静默安装后用户的密码有效期默认设置为180天,180天后密码将失效,oracle会提示要修改密码。 我们项目用的是jdbc连接oracle数据库,没法...
按照这种方法,我们估算了几种2 p发射核素的半衰期值,并将我们的结果与其他模型的预测以及文献中的现有数据进行了比较,特别是16 Ne,19 Mg,45 Fe, 48个Ni,54个Zn和67个Kr母核。 可以看出,适于处理2 p衰变过程...
2.cookie是浏览器内置,只要在cookie定义的有效期内,数据都不会丢失. 3.二区cookie不是可执行文件,所以不会给用户带来病毒或攻击用户系统 缺点: 1.基于cookie开发的购物车要求用户浏览器必须支持并设置为...
1 三个Statment区别,用法 statement对象作为最基本的数据操作对象,可以应用于几乎所有的数据库,但是...3 servlet调用方式几种方法 答:通过JSP提交进行调用,可以通过浏览器地址栏访问调用,可以通过超链接调用。
共六种PHP加解密方法, 其中包含非常...$expiry:密文有效期。第六种 函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。
超出有效期的卡可以自由设置 超期无法打折或超期无法消费。这个可以有效解决客户有卡不来洗衣的情况。不喜欢这种有效期形式,可设置卡为无限期(软件默认无限期) 点击此处,传送到详细介绍 8.支持手持pos机消费...
SAP系统记账期间与想要记账的期间还相差好几个期间,如:公司代码5012当前的记账期间为201505,而用户想将记账日期改为与当前...那么有没有一种快捷的方式将账期一步到位的开到用户想要设置的记账期间呢?答案是肯定的
若此时教师未进行任何操作,可分为如下三种情况: 在班级模型空白区点右键可弹出如下菜单: 在单个学生机图标处点右键可弹出如下菜单: 如选择多个学生机图标点右键可弹出如下菜单: 如此时教师已经进行了操作,则...
(12) 可设计报表:一般的管理系统只有固定的几种报表,本系统具有报表设计功能,利用精心设计的报表定制功能,您只需几个简单步骤就可设计出漂亮实用的报表。有3类报表,分类明细表、分类统计表和透视分析表 。 ...
根据LNG接收站建设期空气质量监测数据,研究了大气中总悬浮颗粒物(TSP)及PM10的含量,并分析了...研究结果表明:采取文中提出的几种防治措施后,TSP值明显降低,文中提出的几种防治措施有效的控制了LNG接收站建设期TSP污染。
但是都不是很好用(虽然可能学习成本比较低,因为它使用起来相对简单),我可能需要很多的静态常量来作为key存储缓存数据value,并设置缓存的有效期,这可能需要很多Java代码去实现,并且过程繁琐。 如果您使用的网络...
会员有效期设置 会员密码更改 会员密码查询 会员查询 会员消费查询 会员消费明细查询 会员充值/消费记录查询 会员积分排行 应收账管理 会员消费排行 优惠卡管理 优惠卡查询 优惠卡交易明细查询 会员卡管理 4.3前台...
PrimoCache驱动有效的情况下,普通方式修改信息很难逃避监控,会被识别。 以前只用注册表存储相关信息,现在增加了一个80字节的机密文件,系统占用防删除, 敢于使用这种保护策略,那么名声在外的unlocker肯定是...
( y: ] o$ r9 C( \/ x5 b @: a站点(Site)是由一个或多个IP子网中的一组计算机,确保目录信息的有效交换,站点中的计算机需要很好地连接,尤其是子网内的计算机。站点和域名称空间之间没有必要的连接。站点反映网络的...
2.几种垃圾回收机制 2.1.标记-清除收集器 这种收集器首先遍历对象图并标记可到达的对象,然后扫描堆栈以寻找未标记对象并释放它们的内存。这种收集器一般使用单线程工作并停止其他操作。 2.2.标记-压缩收集器 ...
会员有效期设置 会员密码更改 会员密码查询 会员查询 会员消费查询 会员消费明细查询 会员充值/消费记录查询 会员积分排行 应收账管理 会员消费排行 优惠卡管理 优惠卡查询 优惠卡交易明细查询 4.3前台营业 前台营业...
经常有读者超过借阅期的情况发生,对此类读者的超期信息提 示也是图书借阅管理工作中必须解决的问题之一。 本软件主要有以下几方面的功能 〔1系统部分:主要完成本系统工程的维护工作〔包括:添加用户、添加员工、...
我们试列举以下几种情形,很多情况下,仅仅基于计算机网络的信息系统是无法及时反馈信息的 ① 销售员要和客户签单了,想立刻知道库存里某种商品的存货数量是否足够出货。 ② 货主想随时了解订单的执行状态,想知道...
需要实现这样一个功能:在第三方授权的认证当中,在用户首次登录授权我们会得到一个access_token,有效期为25小时,还会得到一个refresh_token,有效期为30天。 我们只要保存好这个refresh_token,在30天内我们都...
无限用户组添加功能、站内短信功能、会员点券明细查询、有效期查询、资金明细查询、点卡在线充值功能、在线支付实时到帐,会员可设置为扣点会员、有效期会员和、无限期会员。 SEO优化 在线智能生成GOOGLE/百度标准...