`
dushanggaolou
  • 浏览: 173763 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

登录有效期的设置的几种情况

    博客分类:
  • JAVA
阅读更多
    在一般系统登录后,都会设置一个当前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网页有效期

    综上所述,处理Session的有效期主要涉及以下几个方面:在`web.xml`中配置全局有效期、通过Java Servlet动态设置有效期以及检查Session的有效性。开发者可以根据具体的应用场景灵活选择合适的方法。通过合理设置...

    Websphere Application Server 6.1有效期问题解决办法

    因此,本文将详细介绍两种无需重新安装即可解决Websphere Application Server 6.1许可证有效期问题的方法。 #### 方法一:快速解决办法 **步骤详解:** 1. **定位并删除was.license文件:** 首先,需要找到位于`IBM...

    华为路由器 查看License有效期(剩余激活天数)操作指导

    查看华为路由器的License有效期有以下几种情况: 1. **非商用永久License**:在已经激活非商用永久License的情况下,可以通过执行`display license state`命令来查看当前状态。例如,命令执行后显示“Info: Current...

    贷款担保公证书有效期是多长时间.docx

    公证书的有效期一般可以分为以下三种情况: 1. **明确规定了有效期的公证书**:这类公证书会在文件中明确规定其有效期。例如,如果一份贷款担保公证书中明确指出有效期为5年,则在此期间内该公证书具有法律效力。 ...

    搜狐视频VIP频道如何计算有效期-.docx

    **点播有效期**是为那些只想观看某一个或几个特定影片的用户准备的。用户在选择点播服务后,可以根据自己的需求购买48小时或72小时的点播有效期。一旦用户开始播放,48小时或72小时的有效期就会开始计算。在此期间内...

    京东appck抓取软件,带步骤和教程,抢购秒杀必备,一般提取出来的有效期都在几个月以上

    在抢购场景下,拥有有效的Cookie可以帮助用户更快地加载页面,从而在竞争激烈的秒杀活动中占得先机。 本套资源包含三个关键部分:《抓取appck教程视频.mp4》是一个教学视频,详细指导用户如何操作软件进行Cookie的...

    PHP实现SSO单点登录三种情况的实现方式详解编程小技巧共

    3. **Token刷新**:为了安全性,Token通常有有效期,过期后用户需要重新登录获取新的Token。也可以通过刷新Token的方式延长用户会话。 **第三种情况:基于Session ID的共享** 1. **集中式Session存储**:所有应用...

    优惠券有效期

    在电子商务系统中,优惠券是一种常用的促销手段,通过设置不同的优惠条件吸引用户消费。而优惠券的有效期管理是确保用户体验和商家利益的重要环节之一。本文将围绕“优惠券有效期”的核心内容进行详细解析,包括如何...

    交通肇事罪中的几种特殊情况.docx

    本文将对交通肇事罪中的几种特殊情况予以阐释,以帮助理解该罪名在实际应用中的复杂性和细节差异。 首先,针对共同犯罪的情形,当单位主管人员、机动车所有人或承包人指使肇事司机逃逸,并因此导致受害者因未得到...

    对pfx文件延长签名时间

    标题提到的“对pfx文件延长签名时间”是指更新或续期已有的PFX证书,以便其签名有效期得以延长。 当一个PFX文件的签名时间即将到期时,这可能会导致一系列问题,比如软件或服务的用户可能因为证书过期而无法正常...

    合伙人股权退出机制的几种方式.docx

    以下是关于合伙人股权退出机制的几种常见方式的详细说明: 1. 提前约定退出机制:这是建立公平股权退出的基础。在公司成立初期,所有合伙人应就何时、如何退出以及退出时股权如何处理达成共识。例如,可以规定在...

    行业文档-设计装置-一种延长有效期的铅含量快速检测试纸及其制备方法.zip

    在当前的行业文档中,我们关注的焦点是“一种延长有效期的铅含量快速检测试纸及其制备方法”。这个主题涉及到环境科学、化学分析技术以及材料科学等多个领域,特别是对于食品安全和环境保护具有重要意义。铅是一种...

    SSH中常见的几种异常

    本篇文章将详细讨论在SSH项目开发中遇到的几种常见异常以及相应的解决方法。 一、连接失败 1. **错误提示:“Connection refused”**:这通常意味着目标服务器未监听SSH端口(默认22)。检查服务器的SSH服务是否...

    myeclipse6.5 注册码 有效期至2012年9月14日

    根据提供的标题、描述、标签及部分内容,我们可以了解到这段信息主要涉及的是MyEclipse 6.5版本的注册码以及其有效期。接下来,我们将对MyEclipse 6.5这款软件进行详细介绍,并解释注册码的相关概念及其重要性。 ##...

    修改oracle密码有效期限制的两种思路详解

    由于项目的一个bug,导致好几个现网项目都出现了异常。 bug说明: oracle11g,静默安装后用户的密码有效期默认设置为180天,180天后密码将失效,oracle会提示要修改密码。 我们项目用的是jdbc连接oracle数据库,没法...

    ASP.NET中页面传值的几种方法

    // 设置有效期 Response.Cookies.Add(cookie); ``` **获取Cookie值**: ```csharp if (Request.Cookies["param1"] != null) { string str = Request.Cookies["param1"].Value; } ``` #### 六、使用`Response....

    使用cookie+memecached实现单点登录方案

    对于cookie过期时间的设置,主要有以下两种情况: 1. 设置为非正数(0或负数):这种情况下,cookie信息存储在内存中,浏览器关闭后失效,但可能导致安全性问题,因为用户可能会长时间保持浏览器打开状态。 2. 设置...

    Linux安全设置.docx

    以下是几种可以实施的密码管理措施: ##### 1. 禁止使用旧密码 为了防止用户重复使用相同的密码,可以通过配置PAM (Pluggable Authentication Modules) 来实现。具体步骤如下: ```bash sudo vi /etc/pam.d/system-...

    解析几种有效的开关电源电磁干扰的抑制措施

    本文将对开关电源电磁干扰的产生机理进行分析,并探讨几种有效的抑制措施。 开关电源电磁干扰的产生机理主要有以下几点: 1. 二极管的反向恢复时间引起的干扰:当整流二极管在正向导通切换到截止状态时,PN结中会...

Global site tag (gtag.js) - Google Analytics