JavaWeb主要有三种类型的监听器ServletContextListener,HttpSessionListener,ServletRequestListener, 这三种类型监听器对应的作用域分别是application, session, request。编写自定义的监听器时,只需要实现上述的三个接口即可。
具体使用方式如下:
1.创建自定义监听器
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("监听器初始化");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("监听器销毁");
}
}
创建监听器implements对应的监听器类型,根据自己的需求实现contextInitialized、contextDestroyed(初始化/销毁)方法即可。
2.在web.xml上添加监听器
<listener>
<listener-class>org.test.MyListener</listener-class>
</listener>
也可以添加session过期时间配置(可选)
<!-- 配置session超时时间为1分钟,如果为0,则表示不超时 -->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
配置完成,启动服务即可。
注意事项:
在spring里,各个模块的启动顺序如下:
listener >> filter >> servlet >> spring
所以在listener里是无法自动注入bean的!!!
ApplicationContext context =
WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
//2.2:获取bean
dao = context.getBean(TestDao.class);