Javaweb三大组件之-监听器
Listener:监听器 ;
注意:监听器在javaweb三大组件是最不重要的,不需要太了解
概述
在JavaWeb被监听的事件源为:**ServletContext、HttpSession、ServletRequest,**即三大域对象,分为
- 监听域对象“创建”与“销毁”的监听器;
- 监听域对象“操作域属性”的监听器;
- 监听HttpSession的监听器
创建或销毁监听器
- ServletContextListener:Tomcat启动和关闭时调用下面两个方法
public void contextInitialized(ServletContextEvent evt)
:ServletContext对象被创建后调用;
public void contextDestroyed(ServletContextEvent evt)
:ServletContext对象被销毁前调用;
- **HttpSessionListener:**开始会话和结束会话时调用下面两个方法
public void sessionCreated(HttpSessionEvent evt)
:HttpSession对象被创建后调用;
public void sessionDestroyed(HttpSessionEvent evt)
:HttpSession对象被销毁前调用
- **ServletRequestListener:**开始请求和结束请求时调用下面两个方法
public void requestInitiallized(ServletRequestEvent evt)
:ServletRequest对象被创建后调用
public void requestDestroyed(ServletRequestEvent evt)
:ServletRequest对象被销毁前调用
Listener实现
需求:
编写MyServletContextListener类,实现ServletContextListener接口
在web.xml文件中部署监听器
为了看到session销毁的效果,在web.xml文件中设置session失效时间为1分钟
java代码:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class testListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("创建ServletContext对象");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("销毁ServletContext对象");
}
}
注:ServletContextEvent – 事件类对象
该类有getServletContext(),用来获取ServletContext对象,即获取事件源对象
xml配置:
<listener>
<listener-class>MyServletContextListener</listener-class>
</listener>
<session-config>
<session-timeout>1</session-timeout>
</session-config>