原文地址:设置session过期时间

Session一直是我们做web项目经常使用的,以前没太注意,这次又细致的看了下!

  1.session其实就是一个Map,键=值对,通过session.getAttribute("name");获得session中设置的参数

  2.session的过期时间是从什么时候开始计算的?是从一登录就开始计算还是说从停止活动开始计算?

  答:从session不活动的时候开始计算,如果session一直活动,session就总不会过期。

  从该Session未被访问,开始计时; 一旦Session被访问,计时清0;

  3.设置session的失效时间

  a)web.xml中

  <session-config> <session-timeout>30</session-timeout> </session-config>

  b)在程序中手动设置

  session.setMaxInactiveInterval(30 * 60);//设置单位为秒,设置为-1永不过期

  c)tomcat也可以修改session过期时间,在server.xml中定义context时采用如下定义:

  <Context path="/livsorder" docBase="/home/httpd/html/livsorder"   defaultSessionTimeOut="3600" isWARExpanded="true"   isWARValidated="false" isInvokerEnabled="true"   isWorkDirPersistent="false"/>

  4.如何判断session过没过期

  1.以前是根据 if(session.getAttribute('user')==null)判断是否为空

  =========================================================================================

  2.如下为看到的一个帖子,判断session不为空的好方法:

  request.getSeesion(boolean)方法,一下子让我恍然大悟。这个方法里面传了一个boolean值,这个值如果是true,那么如果当前的request的session不可用,那么就创建新的会话,如果存在就返回当前的会话。如果参数是false,那么在request的当前会话不存在的时候就返回null。
这样我们就可以很容易的联想到这个所谓的request的当前会话是否存在和session过期的联系,所以我们就可以“近似地”认为session不存在就是session过期了,那么我们就可以很容易地判断session是否过期了。方法如下:

  if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");

  可能大家注意到我上面有一个“近似地”字眼,也就是说存在特别情况。
这个特殊情况就是第一次请求还没有创建会话的时候,那么用这个方法返回的仍然是null,原因我想大家应该是显然的。

也有很多人觉得应该使用javax.servlet.http.HttpSessionBindingListener接口来实现类似功能。
他们的意思是当session创建的时候session.setAttribute("isActive","yes");只要session没有过期,那么我们就可以session.getAttribute("isActive")==null来判断,但是我们如果在过期以后就不能用这个办法了,因为我们使用过期的session.getAttribute()方法就会抛出java.lang.IllegalStateException,这时候我们就只能通过捕捉这个异常来进行判断,这就会打乱我们整个程序的逻辑流程。
当然我们也可以在session过期的时候这样处理,在HttpSessionBindingListener接口的onValueUnbound()方法里面通过设置一个flag来标志session已过期,之后盘都都使用这个flag,那么这个flag一定是要放在application里面,application是HttpServletContex类的对象,所以我们必须对这个flag加入是哪个session过期的信息,这样一来整个的过程就十分麻烦。
关于用监听器实现我要补充一点,我的方法是站在某一个session的角度来实现的。如果说要监测多个session就应该站在application的角度来分析,这时候的最佳选择就是HttpSessionBindingListener或者HttpSessionListener
写这个帖子的目的就是让大家在需要判断的时候(不管session是否过期都OK)用这样的一条语句来简单的实现功能,至于意义我们姑且不谈。

转自:http://www.educity.cn/wenda/121809.html

转载于:https://www.cnblogs.com/mumu122GIS/p/10383904.html

转:设置session过期时间相关推荐

  1. C#发布网站在web.config和IIS中设置Session过期时间

    C#发布网站在web.config和IIS中设置Session过期时间 web.config <system.web> <sessionState mode="InProc ...

  2. java设置过期时间_java设置session过期时间的实现方法

    本文实例讲述了java设置session过期时间的实现方法,分享给大家供大家参考.具体实现方法如下: 1.Timeout in the deployment descriptor (web.xml) ...

  3. 设置session时间 php,php中实现精确设置session过期时间的方法

    这篇文章主要介绍了php中实现精确设置session过期时间的方法,需要的朋友可以参考下 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一 ...

  4. cookielifetime php_php中实现精确设置session过期时间的方法

    大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下session过期时间. 对此,可以在PHP中,设置php.ini,找到session. ...

  5. java session时间_Java基础:里设置session过期时间

    由于session值之前没有设置,以至于刚登录的网站,不到一分钟就超时了,总结了一下,原来是session过期的原因,以下是设置session时间的3个方法: 1. 在tomcat-->conf ...

  6. tomcat里设置session过期时间

    以下是设置session时间的3个方法: 1. 在tomcat-->conf-->servler.xml文件中定义: <Context path="/test" ...

  7. springboot shiro设置session过期时间

    登陆成功之后设置session时间即可 /*** 自定义登录filter*/ public class AuthenticationFilter extends FormAuthenticationF ...

  8. spring cloud设置session过期时间

    一.错误步骤特别说明 首先说明一下spring cloud gateway,修改下面是无效的(无论是改成3600,1m等等) server:   servlet:     session:       ...

  9. php修改sessiob时间_php中session过期时间设置

    网上很多人给出了解答:修改php配置文件中的session.gc_maxlifetime.如果想了解更多session回收机制,继续阅读.(本文环境php5.2) 概述:每一次php请求,会有1/10 ...

最新文章

  1. 5、kubernetes 集群 YAML 文件详解
  2. 004_Mysql数据库的CRUD的操作
  3. ML之LiR2PolyR:使用线性回归LiR、二次多项式回归2PolyR模型在披萨数据集上拟合(train)、价格回归预测(test)
  4. linux内核makefile详解,linux kernel编译Makefile和Kconfig,make menuconfig详解
  5. 直播实时转播软件_多群转播神器——转播小助手
  6. EntityModelStudio系列教程
  7. mac+ffmpeg+php,mac折腾安装ffmpeg小记
  8. CSS ---- 隐藏滚动条
  9. 玩游戏显示计算机内存不足怎么办,电脑魔兽世界内存不足怎么办
  10. eclipse中文教程
  11. 社会工程学攻击的三个典例
  12. android webview 下载事件,Android使用WebView实现文件下载功能
  13. Latex的一些排版技巧
  14. 揭秘 | Akuna工作体验大揭秘
  15. 图片不能承受之重-转
  16. [单片机框架][DFU] Dfu升级例子 带crc校验+超时机制+led指示灯+芯片加锁+芯片自擦
  17. 消息服务器待办事项数据库,关联联系信息的工作管理系统及其方法
  18. 有功,无功,视在功率的关系公式和图
  19. 服务器虚拟化实施方案可研报告,服务器虚拟化实施方案可研可行报告报告(2017word资料).doc...
  20. 关于sqlserver远程连接创建后报错小结

热门文章

  1. 【九度OJ】题目1206:字符串连接
  2. IT职业应该注意的几个问题
  3. Java 高级算法——数组中查询重复的数字
  4. autocad三维汇报,bim汇报,视图汇报方法
  5. java基础讲解05-----流程控制语句
  6. AndroidStudio 解决Android方法数超过65535的问题
  7. ASP中的工具类函数收集
  8. 改用C++生成自动化数据表
  9. Spring Cloud微服务实战:手把手带你整合eurekazuulfeignhystrix
  10. android—label窗口——基础编