1、启动类添加注解
@ServletComponentScan("com.tyxx.common.listener") // 扫描监听器类的包
@SpringBootApplication
@ServletComponentScan("com.tyxx.common.listener")
public class GuangdongApplication extends SpringBootServletInitializer {
private static final Logger log = LoggerFactory.getLogger(GuangdongApplication.class);
public static void main(String[] args) {
log.info("开始启动!--The service to start");
SpringApplication.run(GuangdongApplication.class, args);
log.info("启动成功!--The service is starting");
}
/**
* 打war包用
* @param builder
* @return
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(GuangdongApplication.class);
}
}
2、配置监听类
此处用@Component注解,有用@WebListener注解的,我也尝试过,但是存在一个问题,部署到tomcat后service不能注入,为null,不知道什么问题
@Component
public class RequestListener implements HttpSessionListener {
private static int online = 0;
@Autowired
private MessageService messageService;
/**
* session创建时,触发
*
* @param event
*/
@Override
public void sessionCreated(HttpSessionEvent event) {
System.out.println("session创建!");
}
/**
* session被销毁时触发,如下情况
* 1.主动调用session.invalidate()
* 2.session超时
*
* @param event
*/
@Override
public void sessionDestroyed(HttpSessionEvent event) {
System.out.println("session销毁-----------------------------------");
System.out.println(messageService);
}
}
补充:常用监听接口
1.ServletContextListener – 监听servletContext对象的创建以及销毁
1.1 contextInitialized(ServletContextEvent arg0) -- 创建时执行
1.2 contextDestroyed(ServletContextEvent arg0) -- 销毁时执行
2.HttpSessionListener – 监听session对象的创建以及销毁
2.2 sessionCreated(HttpSessionEvent se) -- 创建时执行
2.2 sessionDestroyed(HttpSessionEvent se) -- 销毁时执行
3.ServletRequestListener – 监听request对象的创建以及销毁
3.1 requestInitialized(ServletRequestEvent sre) -- 创建时执行
3.2 requestDestroyed(ServletRequestEvent sre) -- 销毁时执行
4.ServletContextAttributeListener – 监听servletContext对象中属性的改变
4.1 attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行
4.2 attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行
4.3 attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行
5.HttpSessionAttributeListener --监听session对象中属性的改变
5.1 attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行
5.2 attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行
5.3 attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行
6.ServletRequestAttributeListener --监听request对象中属性的改变
6.1 attributeAdded(ServletRequestAttributeEvent srae) -- 添加属性时执行
6.2 attributeReplaced(ServletRequestAttributeEvent srae) -- 修改属性时执行
6.3 attributeRemoved(ServletRequestAttributeEvent srae) -- 删除属性时执行