zoukankan      html  css  js  c++  java
  • 【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 }
  • 相关阅读:
    移动APP的开发需求分析
    我心中的理想团队和对软件开发流程的理解
    Git 命令
    在Visio2010中修改默认字体的大小
    Remove @Override annotation错误提示
    SPRING框架中ModelAndView、Model、ModelMap区别
    select count(*)和select count(1)的区别
    eclipse 关键字高亮显示
    MyEclipse下安装MyBatis Generator代码反向生成工具
    关于 log4j.additivity的说明
  • 原文地址:https://www.cnblogs.com/dream-to-pku/p/5933462.html
Copyright © 2011-2022 走看看