Lienerj监控器的主要功能:
- Linter监听器的功能:
- 可以统计在线人数。
- 加载初始化的信息。
- 统计网站的访问量。
- 监控访问信息。
Linter监听器的框架图:
ServletRequestListenera监听器示例:
/**
* 监控总共的访问量
*
* **/
public class ServletListenerImpl2 implements ServletRequestListener {
private int math=0;
@Override
public void requestDestroyed(ServletRequestEvent sre) {
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
math++;
sre.getServletContext().setAttribute("math",math);
}
}
HttpSessionListener监控器
/**
* 用于监控在线人数
*
* **/
public class ServletListenerImpl1 implements HttpSessionListener {
private int userNumber=0;
@Override
public void sessionCreated(HttpSessionEvent se) {
userNumber++;
se.getSession().setAttribute("userNumber",userNumber);
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
userNumber--;
se.getSession().setAttribute("userNumber",userNumber);
}
}
ServletContextListener监听器:
public class ServletListenerImpl implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("context对象被创建了");
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("context对象被销毁了");
}
}
ServletContextAttributeListener监听器:
public class ServletListenerImpl implements ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent scae) {
//context域中的添加了属性调用
}
@Override
public void attributeRemoved(ServletContextAttributeEvent scae) {
//context域中删除了属性调用
}
@Override
public void attributeReplaced(ServletContextAttributeEvent scae) {
//context域中修改了属性继续调用
}
}
ServletRequestAttributeListener监听器:
public class ServletListenerImpl implements ServletRequestAttributeListener {
@Override
public void attributeAdded(ServletRequestAttributeEvent srae) {
//request域中的添加了属性调用
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent srae) {
//request域中删除了属性调用
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent srae) {
//request域中修改了属性继续调用
}
}
HttpSessionAttributeLister监听器:
public class ServletListenerImpl implements HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent se) {
//监控域属性的添加
}
@Override
public void attributeRemoved(HttpSessionBindingEvent se) {
//监控域属性的删除
}
@Override
public void attributeReplaced(HttpSessionBindingEvent se) {
//监控域属性的修改
}
}
sessionWillPassivate监听器:
//这里注意要实现Serializable接口,因为钝化和活化都是序列化操作
public class HttpSessionActivation implements HttpSessionActivationListener,Serializable {
//监听器中有两个属性,用来演示效果
private AtomicInteger id;
private String name;
public AtomicInteger getId() {
return id;
}
public void setId(AtomicInteger id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//当有Session被钝化之前就会执行此方法
@Override
public void sessionWillPassivate(HttpSessionEvent se) {
System.out.println("Session 被钝化了");
}
//session被活化之后此方法也会被Servlet容器执行
@Override
public void sessionDidActivate(HttpSessionEvent se) {
System.out.println("Session 被活化了");
}
HttpSessionBindingListener监听器:
public class User implements HttpSessionBindingListener,Serializable{undefined
private String username;
private String password;
public String getUsername() {undefined
return username;
}
public void setUsername(String username) {undefined
this.username = username;
}
public String getPassword() {undefined
return password;
}
public void setPassword(String password) {undefined
this.password = password;
}
public void valueBound(HttpSessionBindingEvent hsbe) {undefined
System.out.println("valueBound name: "+hsbe.getName());
}
public void valueUnbound(HttpSessionBindingEvent hsbe) {undefined
System.out.println("valueUnbound name: "+hsbe.getName());
}
}
部分代码出自:https://blog.youkuaiyun.com/weixin_42113552/article/details/114165752