一、获得当前在线人数
package com.bjsxt.listener; import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; /** * @program: JavaEE * @description * @author: wuhao * @create: 2019-12-13 09:41 **/ public class OnlineListener implements HttpSessionListener, HttpSessionAttributeListener { @Override public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) { if ("employee".equals(httpSessionBindingEvent.getName())){ //获得全局对象 ServletContext servletContext = httpSessionBindingEvent.getSession().getServletContext(); //获得在线人数 Integer online = (Integer) servletContext.getAttribute("online"); if (online == null) { online = 1; } else { online++; } //设置全局属性 servletContext.setAttribute("online",online ); } } @Override public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) { } @Override public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) { } @Override public void sessionCreated(HttpSessionEvent httpSessionEvent) { } @Override public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { //注销session时 人数-1 //获得全局对象 ServletContext servletContext = httpSessionEvent.getSession().getServletContext(); Integer online = (Integer) servletContext.getAttribute("online"); if (online==null){ online=0; }else { online--; } servletContext.setAttribute("online",online ); } }
web.xml配置
<listener>
<listener-class>com.bjsxt.listener.OnlineListener</listener-class>
</listener>
二、监听用户的操作(日志文件)
package com.bjsxt.listener;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
/**
* @program: JavaEE
* @description
* 日志
* @author: wuhao
* @create: 2019-12-12 19:28
**/
public class UserListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
}
@Override
//监听发出的请求
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
ServletRequest servletRequest = servletRequestEvent.getServletRequest();
HttpServletRequest request =(HttpServletRequest)servletRequest;
//获得远程请求的ip
String ip = request.getRemoteAddr();
//获得请求的时间
String date = new Date().toLocaleString();
//获得请求的动作
String requestURI = request.getRequestURI();
String queryString = request.getQueryString();
//把这写到日志文件中去
try {
PrintWriter printWriter = new PrintWriter(new FileWriter("D:/sxtOA.txt", true));
printWriter.println("用户,ip为:"+ip+"在"+date+"访问了程序的"+requestURI+"?"+queryString);
printWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
web.xml配置
<listener> <listener-class>com.bjsxt.listener.UserListener</listener-class> </listener>