【SessionListener】

@WebListener
public class SessionListener implements HttpSessionListener,HttpSessionIdListener{
@Override
public void sessionIdChanged(HttpSessionEvent e, String oldSessionId) {
SessionRegistry.updateSessionId(e.getSession(),oldSessionId);
System.out.println(this.date()+":Session ID:"+oldSessionId+" changed to "+e.getSession().getId());
} private String date() {
SimpleDateFormat f = new SimpleDateFormat("EEE dd,mm,yyyy HH:mm:ss");
return f.format(System.currentTimeMillis());
} @Override
public void sessionCreated(HttpSessionEvent e) {
SessionRegistry.addSession(e.getSession());
System.out.println(this.date() + ":Session "+e.getSession().getId()+"created.");
} @Override
public void sessionDestroyed(HttpSessionEvent e) {
SessionRegistry.removeSession(e.getSession());
System.out.println(this.date() + ":Session "+e.getSession().getId()+"destroyed.");
}
}

【SessionRegistry】比较轻量,私有构造,一些静态方法

public final class SessionRegistry {
private static final Map<String,HttpSession> SESSIONS = new Hashtable<>();
public static void addSession(HttpSession session){
SESSIONS.put(session.getId(),session);
}
public static void updateSessionId(HttpSession session,String oldSessionId){
synchronized (SESSIONS){
SESSIONS.remove(oldSessionId);
addSession(session);
}
} public static void removeSession(HttpSession session){
SESSIONS.remove(session.getId());
} public static List<HttpSession> getAllSessions(){
return new ArrayList<>(SESSIONS.values());
} public static int getNumberOfSessions(){
return SESSIONS.size();
}
private SessionRegistry(){}
} 【web.xml】
<listener>
<listener-class>net.mypla.SessionListener</listener-class>
</listener>

Listener 快速开始的更多相关文章

  1. Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)解决

    环境:Windows 2008 R2 + Oracle 10.2.0.3 应用最新bundle patch后,扫描依然报出漏洞 Oracle Database Server 'TNS Listener ...

  2. Android视频编辑SDK--RDVECore来自锐动的无UI,高度抽象化API

    1 RDVECore功能概述 RDVECore是锐动推出的无UI,高度抽象化API的视频编辑SDK,支持以下功能: 1.1 丰富的编辑功能 RDVECore包含了丰富的基础功能,对于编辑中的视频.图片 ...

  3. 快速搭建springmvc+spring data jpa工程

    一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...

  4. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. RMAN异机恢复快速参考

    应用场景:服务器A为正常运行的生产环境,需要在服务器B上部署一套相同环境做测试. 数据库环境:RHEL6.4 + Oracle 11.2.0.4.7 一. 服务器A备份数据库 1.1 在线备份(数据库 ...

  6. RHEL6.4 + Oracle 11g DG测试环境快速搭建参考

    环境现状: 两台虚拟主机A和B: 1. A机器已安装ASM存储的Oracle 11g 实例      参考:http://www.cnblogs.com/jyzhao/p/4332410.html 2 ...

  7. spring快速入门(二)

    一.在spring快速入门(一)的基础上,我们来了解spring是如何解决对象的创建以及对象之间的依赖关系的问题 (比如client中依赖UserAction的具体实现,UserActionImpl中 ...

  8. Apache Commons CLI官方文档翻译 —— 快速构建命令行启动模式

    昨天通过几个小程序以及Hangout源码学习了CLI的基本使用,今天就来尝试翻译一下CLI的官方使用手册. 下面将会通过几个部分简单的介绍CLI在应用中的使用场景. 昨天已经联系过几个基本的命令行参数 ...

  9. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

随机推荐

  1. 洛谷P4316 绿豆蛙的归宿

    一眼看去,这不是高斯消元吗? 然后发现数据范围是100000... 然后发现是DAG...直接拓扑序递推即可. 边(x, y,z)的贡献是P(x) * z / out[x] #include < ...

  2. 软件在 win7 上运行时显示乱码

    一个用户反应后,我当时就蒙圈了,因为之前从未遇到过: 百度一下后,发现用户的这种情况比较特殊,从表面上看,[控制面板]和[注册表]相关项设置都正常,为什么还显示乱码呢? 到最后一步如果已经是(简体,中 ...

  3. semantic ui框架学习笔记三

    网格系统 基本网格 <div class="ui grid"> <div class="column"></div> < ...

  4. java equals和hashcode方法

    equals()方法比较两个对象的引用是否相同 hashcode()方法比较两个对象的哈希码是否相同

  5. c#反射(2)

    public void Test1() { string ClassName="Person"; string MethodName="Test1"; //得到 ...

  6. Python 的内置函数

    函数 功能 示例 示例结果 abs(x) 返回x的绝对值 abs(-2) 2 chr(x) 返回整数x所代表的字符 chr(65) A divmod(x,y) 返回x除以y的商和余数的元组 divmo ...

  7. 网络I/O模型总结

    把网络IO模型整理了一下,如下图

  8. 转载:C++ 二维数组new

    来源:http://developer.51cto.com/art/201002/183127.htm C++编程语言中有一种叫做new的二维数组,它的应用方式比较灵活,可以有多种方法来帮助我们实现一 ...

  9. nGrinder TestRunner http post json

    s nGrinder学习笔记 — post请求 https://blog.csdn.net/meyoung01/article/details/50435881 import HTTPClient.H ...

  10. Centos 7 下监控与告警部署

    微信消息自动推送 注册企业微信 企业微信地址:https://work.weixin.qq.com 注意:上面我只是做个范例,我实际是有自己的企业微信的,下面的企业微信配置和上面的企业微信名称对不上, ...