引用
我们设置SESSION失效的时间,是为了确保在用户长时间不与服务器交互的情况下,可以自动退出登录。本文介绍了三种设置SESSION失效的方法,希望对你有帮助。
Session对象是HttpSessionState的一个实例。该类为当前用户会话提供信息,还提供对可用于存储信息会话范围的缓存的访问,以及控制如何管理会话的方法。下面介绍设置session失效的几种方法。
在系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session。
具体设置很简单,方法有三种:
(1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。
这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。
(2)也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置
<!-- 设置session失效,单位分 -->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
(3)直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中找到<session-config>元素,tomcat默认设置是30分钟,只要修改这个值就可以了。
需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:(1)>(2)>(3)
在一般系统中,也可能需要在session失效后做一些操作,
(1)控制用户数,当session失效后,系统的用户数减少一个等,控制用户数在一定范围内,确保系统的性能。
(2)控制一个用户多次登录,当session有效时,如果相同用户登录,就提示已经登录了,当session失效后,就可以不用提示,直接登录了。
那么如何在session失效后,进行一系列的操作呢?
这里就需要用到监听器了,即当session因为各种原因失效后,监听器就可以监听到,然后执行监听器中定义好的程序就可以了。
监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法
自己可以继承这个类,然后分别实现。
sessionCreated指在session创建时执行的方法
sessionDestroyed指在session失效时执行的方法
给一个简单的例子:
public class SessionListener implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent event) {
HttpSession ses = event.getSession();
String id=ses.getId()+ses.getCreationTime();
SummerConstant.UserMap.put(id, Boolean.TRUE); //添加用户
}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession ses = event.getSession();
String id=ses.getId()+ses.getCreationTime();
synchronized (this) {
SummerConstant.USERNUM--; //用户数减一
SummerConstant.UserMap.remove(id); //从用户组中移除掉,用户组为一个map
}
}
}
然后只需要把这个监听器在web.xml中声明就可以了
<listener>
<listener-class>com.demo.SessionListener</listener-class>
</listener>
分享到:
相关推荐
本文介绍了设置Session失效的几种方法,包括在主页面或公共页面中设置Session失效时间、在项目的web.xml中设置Session失效时间、直接在应用服务器中设置Session失效时间等。此外,还介绍了如何在Session失效后执行一...
当Session失效时,通常会导致用户被重定向到登录页面,以便重新验证其身份。下面将详细讨论EXT Session失效以及如何实现页面跳转至登录页。 首先,EXT是一个JavaScript库,用于构建交互式的、数据驱动的Web应用。它...
描述中的博文链接指向了一篇关于该主题的博客文章,尽管具体内容没有给出,但我们可以推测博主可能讨论了Session失效的原因、影响以及解决方法。 首先,我们需要理解Session的工作原理。在HTTP协议中,由于其无状态...
### Session失效详解 在Web应用开发中,会话管理(Session Management)是一项基本且重要的功能。它用于跟踪用户的会话状态,确保用户在与服务器交互过程中保持登录等状态信息的一致性。Session作为会话管理的一种...
最近由于一个项目,模块切换为ajax请求数据,当Session失效后,ajax请求后没有返回值,只有响应的html:<html>[removed]window.open(‘http://192.168.0.118:8080/welcomeAction/loginUI.do’,’_top’);...
要在Session失效后保留表单数据,有两种常见策略: - **临时存储**:在用户被重定向到登录页面时,将表单数据暂存到服务器的某个地方(如服务器端的内存、数据库或Cookie)。登录成功后,根据存储的数据填充表单。...
在Java中,有三种主要的方法来设置Session的超时时间: 1. **在Web容器中设置**: Web容器,如Tomcat,提供了一个全局的配置选项来设定所有应用的默认Session超时时间。在Tomcat的`conf/web.xml`配置文件中,你...
一同事求援:后台系统的登录成功了,但不能成功登进系统,仍然跳转到登录页,但同一套代码另一个环境却没有问题。 背景 经了解,他对同一个项目使用tomcat部署了两个环境,一个在开发服务器上,一个在他本机,两个...
然后,当客户继续访问服务器上的其他资源时,服务器不再为该客户分配新的 Session 对象,直到客户端浏览器关闭、超时或调用 Session 的 invalidate() 方法使其失效,客户端与服务器的会话结束。 Session 对象主要...
首先,Session的失效时间可以通过以下三种方式设置,其优先级从高到低依次为: 1. **Java代码设置**:通过`request.getSession().setMaxInactiveInterval(int seconds)`方法,以秒为单位设置Session的失效时间。...
ASP.NET 跨域与 Session 失效问题的解决办法 在 ASP.NET 开发中,跨域和 Session 失效问题是一个常见的问题,特别是在使用 iframe 嵌入远程应用时。今天,我们来讨论这个问题的解决办法。 什么是跨域和 Session ...
在Web开发中,处理Session失效的常见方法有: 1. 增加Session超时时间:通过修改web.config文件,可以增加Session的默认生存时间,防止用户因长时间无操作而导致Session过早失效。 2. 使用Cookie辅助:对于某些不...
使用filter来做后台,Ext.Ajax.on('requestcomplete', checkUserSessionStatus, this);用requestcomplete这个方法来异步判断session是否已经失效了
总结起来,解决iframe跨域和session失效的问题,关键在于处理第三方cookie的访问控制和IE浏览器的P3P协议要求。合理的P3P声明是关键所在,它能允许浏览器在符合用户隐私政策的前提下,正确地处理来自第三方源的...
本文介绍了使用AJAX操作时全局监测用户session失效并解决该问题的方法。AJAX,即异步JavaScript和XML,是一种用于浏览器与服务器之间进行异步通信的技术。它允许网页在无需重新加载的情况下与服务器交换数据,并更新...
当在HTTPHandler中遇到Session失效问题,可能是以下原因: 1. **无Cookie支持**:如果客户端禁用了cookie,或者由于某种原因,SessionID无法正确发送回服务器,那么Session就无法正常工作。 2. **异步操作**:...
当Session失效时,我们可以自定义AuthorizeAttribute的子类,如`AuthorizeOfHandleUnAuthorizeAttribute`,并在`HandleUnauthorizedRequest`方法中处理重定向到登录页面的操作。 ```csharp public class ...
Session被删除的情况有三种:程序调用HttpSession.invalidate()方法显式销毁session;session的最大有效时间到期,且服务器在一定时间内没有收到客户端的请求;服务器进程被停止。尽管如此,实际上很难做到在浏览器...
综上所述,处理Ajax Session失效跳转登录页面的方法对于提升Web应用的用户体验和安全性能至关重要。通过在后端设置有效的Session失效拦截逻辑,并在前端根据返回的结果执行相应的处理,可以有效地解决Session失效时...