转自:http://blog.csdn.net/hu_shengyang/article/details/8021435

1.      在web容器中设置(此处以tomcat为例)

在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置:

1

2

3

4

5

6 30

7

Tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制session失效时间。

2.      在工程的web.xml中设置

1

2

3

4 15

5

3.      通过java代码设置

1 session.setMaxInactiveInterval(30*60);//以秒为单位

三种方式优先级:1 < 2 <3

session 在tomcat重启后一般也不会失效,关闭浏览器后,session失效

在一般系统中,也可能需要在session失效后做一些操作:

(1)控制用户数,当session失效后,系统的用户数减少一个等,控制用户数在一定范围内,确保系统的性能。

(2)控制一个用户多次登录,当session有效时,如果相同用户登录,就提示已经登录了,当session失效后,就可以不用提示,直接登录了。

那么如何在session失效后,进行一系列的操作呢?

这里就需要用到监听器了,即当session因为各种原因失效后,监听器就可以监听到,然后执行监听器中定义好的程序就可以了。

监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法

自己可以继承这个类,然后分别实现。

sessionCreated指在session创建时执行的方法

sessionDestroyed指在session失效时执行的方法

给一个简单的例子:

1 public class SessionListener implementsHttpSessionListener{2

3 public voidsessionCreated(HttpSessionEvent event) {4   HttpSession ses =event.getSession();5   String id=ses.getId()+ses.getCreationTime();6   SummerConstant.UserMap.put(id, Boolean.TRUE); //添加用户

7     }8

9   public voidsessionDestroyed(HttpSessionEvent event) {10    HttpSession ses =event.getSession();11    String id=ses.getId()+ses.getCreationTime();12   synchronized (this) {13 SummerConstant.USERNUM--; //用户数减一

14 SummerConstant.UserMap.remove(id); //从用户组中移除掉,用户组为一个map

15 }16 }17 }

然后只需要把这个监听器在web.xml中声明就可以了

1

2

3 com.demo.SessionListener4

5

java 设置session超时_Java设置session超时(失效)的三种方式相关推荐

  1. java base64 编码 类_java base64编码和解码的三种方式 | 学步园

    方式一:使用commons-codec.jar /** * @param bytes * @return */ public static byte[] decode(final byte[] byt ...

  2. .net session 有效时间_Python中requests模拟登录的三种方式(携带cookie/session进行请求网站)...

    这篇文章主要介绍了python中requests模拟登录的三种方式(携带cookie/session进行请求网站),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋 ...

  3. java反射获取实体类_java 反射获取类对象的三种方式

    Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...

  4. springboot:java实现邮件及附件发送、HTML正文的三种方式(一)【附带源码】

    0. 引言 邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒.统计数据定期发送等需求.一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从零实现邮件发送,这是我们要掌 ...

  5. 对Java多线程编程的初步了解,实现多线程的三种方式以及多线程并发安全的线程同步机制

    什么叫进程?什么叫线程? 进程相当于一个应用程序,线程就是进程中的一个应用场景或者说是一个执行单元,一个进程可以启动多个线程,每个线程执行不同的任务,一个线程不能单独存在,他必须是进程的一部分,当进程 ...

  6. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

  7. java 字符终端库_Java 字符终端上获取输入三种的方式分享

    在java 字符终端上获取输入有三种方式: 1.java.lang.system.in (目前jdk版本均支持) 2.java.util.scanner (jdk版本>=1.5) 3.java. ...

  8. java中map类型_Java中Map类型遍历的两种方式对比

    Java中Map类型是存储键值对数据的类型,在编程过程经常使用,进行遍历操作对于每个Java程序员都不会模式,下面总结两种常用的遍历方式(一种keySet,一种entrySet),通过对比让你明白使用 ...

  9. java跳出for循环_Java跳出多层for循环的4种方式

    Java跳出多层for循环的4种方式 一.使用return关键字控制 for (int i = 0;i<10;i++){ for (int j = 0; j<10; j++) { if ( ...

  10. java中遍历集合_java中遍历ArrayList集合的四种方式

    ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双向迭代器 ...

最新文章

  1. 2020秋季人工神经网络作业登记与批改
  2. docker容器内部使用vim
  3. mybatis批量插入oracle报表达式,mybatis oracle两种方式批量插入数据
  4. LeetCode 897. 递增顺序查找树(中序遍历)
  5. linux服务器组件有哪些,推荐几个linux服务器面板
  6. 由canvas实现btn效果有感
  7. 基于SpringBoot的答题系统
  8. 【单目标优化求解】基于matlab粒子群混沌混合蝴蝶优化算法求解最优目标问题(HPSOBOA)【含Matlab源码 1538期】
  9. 基于MHSS的ARAIM算法的详细分析解释
  10. 使用ExtendSim进行制造业仿真
  11. microbit python下mp3_语音 — BBC micro:bit MicroPython中文版 0.0.1 文档
  12. 计算机云台示意图,智能语音识别云台转动模块电路设计—电路图天天读(70)...
  13. 老男孩mysql 百度云_老男孩MySQL DBA 6期
  14. 【渝粤题库】广东开放大学 风险投资 形成性考核
  15. LoadRunner 11安装和使用
  16. php5.6 ecshop,PHP 5.6以上版本运行 ecshop不兼容问题解决方案
  17. 2021年英语专升本英语阅读「Part II 阅读专区」【文章(图片)、答案、词汇记忆】
  18. 英语学习详细笔记(七)不定式
  19. 论文笔记: iDice: Problem Identification for Emerging Issues
  20. Vercel+Freenom 搭建博客

热门文章

  1. 蓝桥杯基础练习之十六进制转八进制
  2. L298N 驱动电机与单片机的线路连接图
  3. 长沙市明德华兴中学2015班在湖南省智慧教育装备展示体验中心开展寒假社会实践活动
  4. python 趋势线计算式_LLT指标-低延迟趋势线对中证500的python复现过程
  5. 光伏发电并网模型MATLAB SIMULINK Boost+三相逆变器 PLL锁相环 MPPT最大功率点跟踪控制(扰动观察法)
  6. 射频芯片工作的心脏——晶振
  7. QCSPCChart for Java R3x0 Crack
  8. pdf论文中python画的图Type 3 fonts字体不兼容
  9. 使用hardhat 开发以太坊智能合约-验证合约
  10. 【英文科技论文翻译】- Detection and localization of multiple spoofing attackers in wireless networks