实训笔记第十天

来源:互联网 发布:淘宝客户运营平台在哪 编辑:程序博客网 时间:2024/05/22 14:42
                                                                                                  servlet续

在线用户使用HttpSessionListener监听器统计  

每当一个session会话建立  在线用户人数+1

每当一个session会话销毁 在线用户人数-1


使用ServletRequestListener监听器统计用户信息

每当一个request建立  将当前用户放入集合

每当session会话销毁  将当前用户移出集合


我使用的是Servlet3.0  监听器直接使用注解@webListener即可 不用在web.xml中布局

在web.xml中配置session-timeout标签  标志session过期时间为1分钟  0为不过期

[html] view plain copy
 print?
  1. <session-config>  
  2.     <session-timeout>1</session-timeout>  
  3. </session-config>  

User 实体类

[java] view plain copy
 print?
  1. package com.scx.entity;  
  2.   
  3.   
  4. /** 
  5.  * 用户实体类 
  6.  * 
  7.  */  
  8. public class User {  
  9.     //当前用户的session id  
  10.     private String sessionId;  
  11.     //当前用户的ip地址  
  12.     private String ip;  
  13.     //当前用户第一次访问的时间  
  14.     private String firstTime;  
  15.     public User() {  
  16.         super();  
  17.           
  18.     }  
  19.     public String getIp() {  
  20.         return ip;  
  21.     }  
  22.     public void setIp(String ip) {  
  23.         this.ip = ip;  
  24.     }  
  25.     public String getFirstTime() {  
  26.         return firstTime;  
  27.     }  
  28.     public void setFirstTime(String firstTime) {  
  29.         this.firstTime = firstTime;  
  30.     }  
  31.     public String getSessionId() {  
  32.         return sessionId;  
  33.     }  
  34.     public void setSessionId(String sessionId) {  
  35.         this.sessionId = sessionId;  
  36.     }  
  37.       
  38. }  

HttpSessionListener监听器

[java] view plain copy
 print?
  1. package com.scx.listener;  
  2.   
  3. import java.util.ArrayList;  
  4. import javax.servlet.annotation.WebListener;  
  5. import javax.servlet.http.HttpSessionEvent;  
  6. import javax.servlet.http.HttpSessionListener;  
  7.   
  8. import com.scx.entity.User;  
  9. import com.scx.util.SessionUtil;  
  10. /** 
  11.  * HttpSessionListener 监听器 
  12.  * 
  13.  */  
  14. @WebListener  
  15. public class MyHttpSessionListener implements HttpSessionListener{  
  16.     //当前用户数  
  17.     private int userCounts=0;  
  18.     @Override  
  19.     public void sessionCreated(HttpSessionEvent se) {  
  20.         //sessionCreated  用户数+1  
  21.         userCounts++;  
  22.         //重新在servletContext中保存userCounts  
  23.         se.getSession().getServletContext().setAttribute("userCounts", userCounts);  
  24.           
  25.     }  
  26.     @Override  
  27.     public void sessionDestroyed(HttpSessionEvent se) {  
  28.         //sessionDestroyed  用户数-1  
  29.         userCounts--;  
  30.         //重新在servletContext中保存userCounts  
  31.         se.getSession().getServletContext().setAttribute("userCounts", userCounts);  
  32.           
  33.         @SuppressWarnings("unchecked")  
  34.         ArrayList<User> userList=(ArrayList<User>) se.getSession().getServletContext().getAttribute("userList");  
  35.         String sessionId=se.getSession().getId();  
  36.         //如果当前用户在userList中  在session销毁时  将当前用户移出userList  
  37.         if(SessionUtil.getUserBySessionId(userList, sessionId)!=null){  
  38.             userList.remove(SessionUtil.getUserBySessionId(userList, sessionId));  
  39.         }  
  40.         //将userList集合  重新保存到servletContext  
  41.         se.getSession().getServletContext().setAttribute("userList", userList);  
  42.     }  
  43.   
  44. }  

原创粉丝点击