• 【JavaEE企业应用实战学习记录】sessionListener


     1 package sanglp.servlet;
     2 
     3 
     4 import javax.servlet.ServletContext;
     5 import javax.servlet.annotation.WebListener;
     6 import javax.servlet.http.HttpSession;
     7 import javax.servlet.http.HttpSessionEvent;
     8 import java.util.Hashtable;
     9 import java.util.Map;
    10 
    11 /**
    12  * Created by Administrator on 2016/10/6.
    13  */
    14 @WebListener
    15 public class HttpSessionListener implements javax.servlet.http.HttpSessionListener {
    16 
    17     //当用户与服务之间开始session时触发该方法
    18     @Override
    19     public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    20         HttpSession session=httpSessionEvent.getSession();
    21         ServletContext application=session.getServletContext();
    22         //获取sessionId
    23         String sessionId=session.getId();
    24         //如果是一次新的会话
    25         if(session.isNew()){
    26             String user=(String)session.getAttribute("user");
    27             //未登陆用户当游客处理
    28             user=(user==null)?"游客":user;
    29             Map<String,String> online=(Map<String, String>) application.getAttribute("online");
    30             if(online==null){
    31                 online=new Hashtable<String,String>();
    32                 //将用户在线信息放入Map中
    33                 online.put(sessionId,user);
    34                 application.setAttribute("online",online);
    35             }
    36         }
    37     }
    38 
    39     //当用户与服务器之间session断开时触发该方法
    40     @Override
    41     public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
    42     HttpSession session=httpSessionEvent.getSession();
    43         ServletContext application=session.getServletContext();
    44         String sessionId=session.getId();
    45         Map<String,String> online=(Map<String,String>)application.getAttribute("online");
    46         if(online!=null){
    47             //删除该用户的在线信息
    48             online.remove(sessionId);
    49         }
    50         application.setAttribute("online",online);
    51     }
    52 }
  • 相关阅读:
    Ruby on Rails中的Rake教程(Rake如何把我灌醉!)
    十一、Spring Boot 集成Shiro和CAS
    Spring Boot 快速入门
    一位创业者的血泪史----献给85前创业者的反思
    罗振宇送给新员工的四句话
    Axure 入门
    XMind常用快捷方式汇总
    CAS 单点登陆
    mysql互换表中两列数据
    mysql默认安装目录说明
  • 原文地址:https://www.cnblogs.com/dream-to-pku/p/5933462.html
Copyright © 2020-2023  润新知