1、监听器的介绍
监听器是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即执行。
2、Servlet监听器
在Servlet规范中定义了多种类型的监听器,用于监听的事件源分别为ServleContext、HttpSession和ServletRequest这三个域对象。
Servlet API提供了8个监听器接口,他们分别是:
● ServletContextListener:应用上下文生命周期监听器。用于监听ServletContext对象的创建和销毁。
● ServletContextAttributeListener:应用上下文属性事件监听器。用于监听WEB应用上下文中的属性改变的事件。
● ServletRequestListener:请求生命周期监听器。用于监听请求的创建和销毁事件。
● ServletRequestAttributeListener:请求属性事件监听器。用于监听请求中的属性改变的事件。
● HttpSessionListener:会话生命周期监听器。用于监听会话的创建和销毁时间。
● HttpSessionActivationListenerListener:会话激活和钝化事件监听器。用于监听会话的激活和钝化的事件。
● HttpSessionAttributeListener:会话属性事件监听器。用于监听会话中的属性改变的事件。
● HttpSessionBindingListener:会话绑定事件监听器。这是唯一不需要在web.xml中设定的Listener。
每个监听器接口中都定义了一些回调方法,当对应的事件发生前或发生后,WEB容器会自动调用对应监听器实现类中的相应方法。
在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为 ServletContext, HttpSession 和 ServletRequest 这三个域对象。
3、监听servletContext域对象创建和销毁
ServletContextListener 接口用于监听 ServletContext 对象的创建和销毁事件。
下面我们来举个例子来说明:
编写 一个MyServletContextListener类实现ServletContextListener接口,具体代码如下:
public class MyServletContextListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println(arg0.getSource() + "被销毁了");
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println(arg0.getSource() + "被创建了");
}
}
然后在web.xml中注册监听器
<listener>
<listener-class>cn.csdn.web.listener.MyServletContextListener</listener-class>
</listener>
2、监听HttpSession域对象创建和销毁
HttpSessionListener接口用于监听HttpSession的创建和销毁
创建一个Session时,sessionCreated(HttpSessionEvent se) 方法将会被调用。
销毁一个Session时,sessionDestroyed (HttpSessionEvent se) 方法将会被调用
下面我们来举个例子来说明:
编写 一个MyHttpSessionListener类实现HttpSessionListener接口,具体代码如下:
public class MyHttpSessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("session对象" + arg0.getSession() + "被创建了");
}
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("session对象"+ arg0.getSession() + "被销毁了");
}
}
然后在web.xml中注册监听器
<listener>
<listener-class>cn.csdn.web.listener.MyHttpSessionListener</listener-class>
</listener>
3、监听HttpRequest域对象创建和销毁
ServletRequestListener 接口用于监听ServletRequest 对象的创建和销毁。
Request 对象被创建时,监听器的requestInitialized方法将会被调用。
Request对象被销毁时,监听器的requestDestroyed方法将会被调用。
下面我们来举个例子来说明:
编写 一个MyServletRequestListener类实现ServletRequestListener接口,具体代码如下:
public void requestDestroyed(ServletRequestEvent arg0) {
System.out.println("request对象"+arg0.getServletRequest()+"被创建了");
}
public void requestInitialized(ServletRequestEvent arg0) {
System.out.println("request对象"+arg0.getServletRequest()+"被销毁了");
}
}
然后在web.xml中注册监听器
<listener>
<listener-class>cn.csdn.web.listener.MyServletRequestListener</listener-class>
</listener>
今天介绍了ServletContext, HttpSession 和 ServletRequest 这三个域对象的创建和销毁