在Servle规范中定义了多种类型的监听器,它们用于监听事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象。 Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型。 1、监听域对象创建和销毁的事件监听器 2、监听域对象中属性的增加和删除的事件监听器
3、监听绑定到HttpSession域中的某个对象的状态的事件监听器
servletContext域的对象创建和销毁 创建时调用方法:contextDestroyed 销毁时调用方法:contextInitialized
例如
public class MyServletContextListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("context销毁!!!");
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("context创建!!!");
}
}
//注册监听器
<listener>
<listener-class>MyServletContextListener</listener-class>
</listener>
出现的效果如下 :
启动服务器的时候context被创建
关闭服务器的时候context被销毁
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class SendMailListener implements ServletContextListener {
private String year = null; //时间自己可以去设置
private String month = null;
private String day = null;
private String hour = null;
private String min = null;
private String mec = null;
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent sce) {
Calendar c = Calendar.getInstance();
c.set(year, month,day, hour, min, mec);
Timer timer = new Timer();
timer.schedule(new TimerTask(){
public void run() {
System.out.println("定时执行的方法");
}
}, c.getTime());
}
}
监听HttpSession域对象创建和销毁
1、HttpSessionListener接口用于监听HttpSessionr wbvft qiva
2、创建一个Session时,sessionCreated(HttpSessionEven se)方法将会被调用。
3、销毁一个Session时,SessionDestroyed(HttpSessionEvent se)方法将会被调用。
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MyServletContextListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent se) {
System.out.println("HttpSession创建");
}
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("HttpSession销毁");
}
}
当我们去访问这个会话的时候,就会去创建一个Session对象,
会话的时间一过,这相Session就会这被销毁