Servlet监听案例之统计在线人数

创建实体类User

User.java

package com.oracle.entity;


public class User {

private String sessionIdString;
private String ipString;
private String firstTimeString;
public String getSessionIdString() {
return sessionIdString;
}
public void setSessionIdString(String sessionIdString) {
this.sessionIdString = sessionIdString;
}
public String getIpString() {
return ipString;
}
public void setIpString(String ipString) {
this.ipString = ipString;
}
public String getFirstTimeString() {
return firstTimeString;
}
public void setFirstTimeString(String firstTimeString) {
this.firstTimeString = firstTimeString;
}
}


SessionUtil.java

package com.oracle.util;


import java.util.ArrayList;


import com.oracle.entity.User;


public class SessionUtil {


public static Object getUserBySessionId(ArrayList<User> userList, String sessionIdString) {
for(int i=0;i<userList.size();i++){
User user = userList.get(i);
if(user.getSessionIdString().equals(sessionIdString)){
return user;
}
}
return null;
}



}



MysessionListener.java


package com.oracle.listener;


import java.util.ArrayList;


import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;


import com.oracle.entity.User;
import com.oracle.util.SessionUtil;


public class MySessionListener implements HttpSessionListener{

private int userNum = 0;


public void sessionCreated(HttpSessionEvent arg0) {
userNum++;
arg0.getSession().getServletContext().setAttribute("userNum", userNum);
}


public void sessionDestroyed(HttpSessionEvent arg0) {
userNum--;
arg0.getSession().getServletContext().setAttribute("userNum", userNum);

ArrayList<User> userList = null;//在线用户

userList = (ArrayList<User>) arg0.getSession().getServletContext().getAttribute("userList");

if(SessionUtil.getUserBySessionId(userList, arg0.getSession().getId())!=null){
userList.remove(SessionUtil.getUserBySessionId(userList,arg0.getSession().getId()));
}

}


}



MyServletRequestListener.java


package com.oracle.listener;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;


import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;


import com.oracle.entity.User;
import com.oracle.util.SessionUtil;


public class MyServletRequestListener implements ServletRequestListener {

private ArrayList<User> userList;//在线用户List


public void requestDestroyed(ServletRequestEvent arg0) {


}


public void requestInitialized(ServletRequestEvent arg0) {


userList = (ArrayList<User>) arg0.getServletContext().getAttribute("userList");

if(userList==null)
userList = new ArrayList<User>();

HttpServletRequest request = (HttpServletRequest) arg0.getServletRequest();
String sessionIdString = request.getSession().getId();

if(SessionUtil.getUserBySessionId(userList,sessionIdString)==null){
User user = new User();
user.setSessionIdString(sessionIdString);
user.setFirstTimeString(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
user.setIpString(request.getRemoteAddr());
userList.add(user);

}

arg0.getServletContext().setAttribute("userList", userList);
}


}



jsp代码


<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body>
    当前在线用户人数:${userNum }</br>
    <%
   ArrayList<com.oracle.entity.User>  userList =  (ArrayList<com.oracle.entity.User>)request.getAttribute("userList");
    if(userList!=null){
    for(int i=0;i<userList.size();i++){
    com.oracle.entity.User user = userList.get(i);
     %>
     IP:<%=user.getIpString()%>,firstTime:<%=user.getFirstTimeString() %>,SessionId:<%=user.getSessionIdString() %><br/>
      <%}}%>
  </body>
</html>



web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
    <listener>
        <listener-class>com.oracle.listener.MyServletRequestListener</listener-class>
    </listener>
    <listener>
        <listener-class>com.oracle.listener.MySessionListener</listener-class>
    </listener>
</web-app>











猜你喜欢

转载自blog.csdn.net/luckily_star/article/details/78690218