session过期时间控制的一些常用方法

来源:http://blog.csdn.net/luo_yifan/article/details/4659392

    在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户没有使用系统一定时间后,自动退出登录,销毁session。

具体设置很简单:
在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);
参数900单位是秒,即在没有活动15分钟后,session将失效。
这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。

在一般系统中,也可能需要在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.summer.kernel.tools.SessionListener
</listener-class>
</listener>


补充:
具体设置很简单,方法有三种:
(1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);
参数900单位是秒,即在没有活动15分钟后,session将失效。设置为-1将永不关闭。
这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。
(2)也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置
<session-config>
<session-timeout>15</session-timeout>
</session-config>
这里的15也就是15分钟失效.
(3)直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中
找到<session-config>元素,tomcat默认设置是30分钟,只要修改这个值就可以了。

需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:
(1)--> (2) ---> (3)



session的过期时间计算是从当前session的最后一次请求开始的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 昵称1到32位字符_Java期末考试编程题复习

在程序中定义Person类&#xff0c;为该类编写如下字段、构造器、访问器、修改器和相应的其他方法。(20分)<1>在Person类中定义两个字段&#xff1a; 私有访问权限&#xff0c;类型为String的name字段&#xff1b; 私有访问权限&#xff0c;类型为int的age字段。<2>…

AI智商评测标准专家研讨会邀请,2018年12月20日北京

21世纪以来&#xff0c;人工智能领域陆续爆发很多重要事件。其中最吸引人们眼球的&#xff0c;当属2016年战胜了人类围棋冠军并开始能够从0自我学习的AlphaGo。 10月26日&#xff0c;软银CEO孙正义在沙特阿拉伯举行的未来投资计划大会上称&#xff0c;未来30年内AI的智商&#…

java代码pingip_java程序ping IP

package com.fdway.tool;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;/**** ping IP地址检查IP地址能否可用**/public class PingIPUtil {public static void main(String[] args) throws IOExce…

HTML 显示特殊字符时转义操作

/*** 转换 HTML 特殊字符*/public static String escape( String s ){if( StringUtils.isBlank( s ) ){return " ";}StringBuilder sb new StringBuilder( s.length() );for( int i 0 ; i < s.length() ; i ){char c s.charAt( i );switch( c ){case < : sb…

开源神经网络框架Caffe2全介绍

本文作者吴逸鸣&#xff0c;整理自作者在GTC China 2017大会上的演讲&#xff0c;首发于作者的知乎文章。 我个人认为这是一份很值得分享的资料&#xff0c;因为 这应该是第一次使用全中文来讲解Caffe2和FB的AI应用的演讲 观看这次演讲不需要机器学习&#xff0f;神经网络&…

JAVA设置jscrollbar大小_JScrollBar垂直/水平设置问题 – Java Swing

下面是我上面提到的一个小的可编辑代码片段.我同意camickr你不应该使用绝对定位而是使用布局管理器.如果你绝对需要为JTextField提供一个水平滚动条,那么让它工作的一种方法就是让它始终显示,使用允许这个的JScrollPane构造函数.即,JScrollPane inputPane new JScrollPane(inp…

TPTP(Java Profiling Tools插件)对Java程序进行性能测试

来源&#xff1a;http://blog.csdn.net/wsj19890201/article/details/5492517 TPTP下载地址&#xff1a;http://www.eclipse.org/tptp/ 概述&#xff1a;Eclipse Test & Performance Tools Platform (TPTP) 的性能测试工具 (Profiling tool)能够用于优化eclipse插件应用、…

AI指数评论:提防“路灯谬误”,开启全球多方对话

来源&#xff1a;亿欧 概要&#xff1a;技术的单点突破&#xff0c;资本市场的多级繁荣&#xff0c;诸如此类的话题充斥着过去两到三年。然而&#xff0c;在AI时代思考AI&#xff0c;我们需要更宏大的世界观。 技术的单点突破&#xff0c;资本市场的多级繁荣&#xff0c;诸如此…

算法还是算力?周志华微博引爆深度学习的“鸡生蛋,蛋生鸡”问题

来源&#xff1a;AI科技大本营上周&#xff0c;由强化学习加持的AlphaZero&#xff0c;把DeepMind在围棋上的突破成功泛化到其他棋类游戏&#xff1a;8小时打败李世石版AlphaGo&#xff0c;4小时击败国际象棋最强AI——Stockfish&#xff0c;2小时干掉日本象棋最强AI——Elmo&a…

java求平均值Scanner_Scanner的一些问题

import java.util.Scanner;public class 无参带返回值方法的使用 {public static void main(String[] args) {// 创建名为hello的对象无参带返回值方法的使用 hello new 无参带返回值方法的使用();// 调用hello对象的calcAvg()方法&#xff0c;并将返回值保存在变量avg中doubl…

WeakHashMap

来源&#xff1a;http://hecc-cqut.iteye.com/blog/984235 在广大的Java界&#xff0c;关于WeakHashMap一直都存在这么个传说&#xff1a; Java代码 在WeakHashMap 中&#xff0c;当某个键不再正常使用时&#xff0c;自动移除其条目 在WeakHashMap 中&#xff0c;当某个键不再…

计算机视觉大规模爆发,6大细分领域将撑起725亿元市场

来源&#xff1a;中国经济时报概要&#xff1a;近几年来&#xff0c;随着技术的发展&#xff0c;中国计算机视觉行业发展迅速。近几年来&#xff0c;随着技术的发展&#xff0c;中国计算机视觉行业发展迅速。尤其是2016年下半年&#xff0c;1∶N人脸识别、视频结构化等计算机视…

java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查

前言:小编总结了之前生产环境cpu 占用率过高等问题,小编功力不够深厚,文章如有不对的地方,还望各位大神指正。排查原因&#xff1a;客服反馈说系统访问缓慢一、 在排查问题的过程中针对 CPU 的问题&#xff0c; 使用以下命令组合来排查问题模拟过程:①示例代码&#xff1a;pack…

java怎么自动提示关键词_Eclipse 实现关键字自动补全功能 (转)

一般默认情况下&#xff0c;Eclipse &#xff0c;MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的&#xff0c;主要是Eclipse &#xff0c;MyEclipse本身有很多选项是默认关闭的&#xff0c;要开发者自己去手动配置。如果开发者不清楚的话&#xff0c;就不知道…

2017 人工智能+内容生产研究报告【附下载】

来源&#xff1a;亿欧概要&#xff1a;技术进步和产业内生需求&#xff0c;是推动AI开始在内容生产领域应用的两个主要动力。为了弄清AI内容生产进行到何种程度&#xff0c;对内容生产可能产生何种影响&#xff0c;小编撰写了这份《2017 人工智能内容生产研究报告》&#xff0c…

ThreadLocal与Synchronized的用法

来源&#xff1a;http://blog.csdn.net/wl_ldy/article/details/5948779 一.ThreadLocal的用法 ThreadLocal的实现&#xff1a; package com.sodao.lucene; import java.util.Random; public class ThreadLocalTest implements Runnable{ ThreadLocal<Studen…

java程序员面试需要注意什么_Java程序员面试时要注意的一些问题

Java程序员面试的时候会面临各种五花八门的问题&#xff0c;你的第一反应、思维逻辑、思考方法&#xff0c;专业水平决定了企业对你的评价和你的薪资水准&#xff0c;但是除了专业以外还有一些你需要避免出现错误的注意事项&#xff0c;如果很好的避免了&#xff0c;就能帮你在…

“强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识

李杉 编译自 KDnuggets量子位 出品 | 公众号 QbitAI地处加拿大埃德蒙顿的阿尔伯塔大学&#xff08;UAlberta&#xff09;可谓是强化学习重镇&#xff0c;这项技术的缔造者之一萨顿&#xff08;Rich Sutton&#xff09;在这里任教。△ 萨顿萨顿常被称为“强化学习之父”&#xf…

cmd中java编译命令是什么_cmd中java的编译命令——java和javac、javap

如题&#xff0c;首先我们在桌面&#xff0c;开始->运行->键入cmd 回车&#xff0c;进入windows命令行。进入如图所示的画面&#xff1a;可知&#xff0c;当前默认目录为C盘Users文件夹下的Administrator文件夹。一般而言&#xff0c;我们习惯改变当前目录。由于windows有…

Struts2源码阅读(一)_Struts2框架流程概述

1. Struts2架构图 请求首先通过Filter chain&#xff0c;Filter主要包括ActionContextCleanUp&#xff0c;它主要清理当前线程的ActionContext和Dispatcher&#xff1b;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。 ActionMapper取得了ActionMappi…