servlet续
在线用户使用HttpSessionListener监听器统计
每当一个session会话建立 在线用户人数+1
每当一个session会话销毁 在线用户人数-1
使用ServletRequestListener监听器统计用户信息
每当一个request建立 将当前用户放入集合
每当session会话销毁 将当前用户移出集合
我使用的是Servlet3.0 监听器直接使用注解@webListener即可 不用在web.xml中布局
在web.xml中配置session-timeout标签 标志session过期时间为1分钟 0为不过期
- <session-config>
- <session-timeout>1</session-timeout>
- </session-config>
User 实体类
- package com.scx.entity;
-
-
-
-
-
-
- public class User {
-
- private String sessionId;
-
- private String ip;
-
- private String firstTime;
- public User() {
- super();
-
- }
- public String getIp() {
- return ip;
- }
- public void setIp(String ip) {
- this.ip = ip;
- }
- public String getFirstTime() {
- return firstTime;
- }
- public void setFirstTime(String firstTime) {
- this.firstTime = firstTime;
- }
- public String getSessionId() {
- return sessionId;
- }
- public void setSessionId(String sessionId) {
- this.sessionId = sessionId;
- }
-
- }
HttpSessionListener监听器
- package com.scx.listener;
-
- import java.util.ArrayList;
- import javax.servlet.annotation.WebListener;
- import javax.servlet.http.HttpSessionEvent;
- import javax.servlet.http.HttpSessionListener;
-
- import com.scx.entity.User;
- import com.scx.util.SessionUtil;
-
-
-
-
- @WebListener
- public class MyHttpSessionListener implements HttpSessionListener{
-
- private int userCounts=0;
- @Override
- public void sessionCreated(HttpSessionEvent se) {
-
- userCounts++;
-
- se.getSession().getServletContext().setAttribute("userCounts", userCounts);
-
- }
- @Override
- public void sessionDestroyed(HttpSessionEvent se) {
-
- userCounts--;
-
- se.getSession().getServletContext().setAttribute("userCounts", userCounts);
-
- @SuppressWarnings("unchecked")
- ArrayList<User> userList=(ArrayList<User>) se.getSession().getServletContext().getAttribute("userList");
- String sessionId=se.getSession().getId();
-
- if(SessionUtil.getUserBySessionId(userList, sessionId)!=null){
- userList.remove(SessionUtil.getUserBySessionId(userList, sessionId));
- }
-
- se.getSession().getServletContext().setAttribute("userList", userList);
- }
-
- }