Servlet的时间监听:
监听器:其实就是一个实现特定接口的java程序,时间监听用来监听时间的方法或者某个属性的改变。当发生上述事件的时候,监听器的某个方法将被调用。
1.监听ServletContext
package com.enterise.always.servlet;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* ServletContext的事件监听
* @author Always
*
*/
public class MyServletContextListener implements ServletContextListener{
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("MyServletContextListener.contextDestroyed()------------->");
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("MyServletContextListener.contextInitialized()---------->");
}
}
在web.xml中配置listener
<listener>
<listener-class>com.enterise.always.servlet.MyServletContextListener</listener-class>
</listener>
当在项目被加载进tomcat的时候,ServletContext被创建时会调用时间监听中的:
信息: SessionListener: contextInitialized()
MyServletContextListener.contextInitialized()---------->
2.监听HttpRequest
package com.enterise.always.servlet;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class MyHttpRequestListener implements ServletRequestListener {
public void requestDestroyed(ServletRequestEvent arg0) {
System.out.println("MyHttpRequestListener.requestDestroyed()");
}
public void requestInitialized(ServletRequestEvent arg0) {
System.out.println("MyHttpRequestListener.requestInitialized()");
}
}
<listener>
<listener-class>com.enterise.always.servlet.MyHttpRequestListener</listener-class>
</listener>
在request被创建的时候:
MyHttpRequestListener.requestInitialized()
当在浏览器上访问另外一个servlet资源的时候:
MyHttpRequestListener.requestDestroyed()
MyHttpRequestListener.requestInitialized()
MyHttpRequestListener.requestDestroyed()
先是将原先的request销毁,调用销毁方法
之后再次调用新的request的创建和销毁。
3.session的监听:
package com.enterise.always.servlet;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* HttpSession的事件监听
* @author Always
*
*/
public class MyHttpSessionListener implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent se) {
System.out.println("MyHttpSessionListener.sessionCreated()--------->");
}
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("MyHttpSessionListener.sessionDestroyed()------>");
}
}
web.xml配置:
<listener>
<listener-class>com.enterise.always.servlet.MyHttpSessionListener</listener-class>
</listener>
当在session创建的时候会执行sesssionCreated()的方法。
在session关闭或销毁的时候会调用sessionDestory的方法:
MyHttpSessionListener.sessionCreated()--------->
MyHttpSessionListener.sessionDestroyed()------>
具体的使用案例有:
统计当前在线人数
统计当前在线用户