首先,listener不只一种。有监听request请求的,有监听session的。
requestListener
新建一个requestListener
@Component
public class MyListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("MyListener destroy...");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("MyListener init....");
}
}
注册requestListener
public class LisenterConfiguration {
@Bean
public ServletListenerRegistrationBean getListenerBean(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean();
MyListener myListener = new MyListener();
bean.setListener(myListener);
//
return bean;
}
}
httpSessionListener
创建httpSessionListener
代码:
@Component
public class MySessionListener implements HttpSessionListener {
private static Logger logger = LoggerFactory.getLogger(MySessionListener.class);
public MySessionListener(){
System.out.println("MySessionListener init:");
}
public void sessionCreated(HttpSessionEvent se) {
logger.info("MySessionListener create,id: {}",se.getSession().getId());
}
public void sessionDestroyed(HttpSessionEvent se) {
logger.info("MySessionListener destroyed,id: {}",se.getSession().getId());
}
}
注册httpSessionListener
@Configuration
public class LisenterConfiguration {
@Bean
public ServletListenerRegistrationBean getListenerBean(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean();
MyListener myListener = new MyListener();
MySessionListener mySessionListener= new MySessionListener();
bean.setListener(myListener);
bean.setListener(mySessionListener);
return bean;
}
}
为什么请求地址,发现没有打印日志呢?
是因为session在spring容器创建的时候就已经完成了。
本文深入解析了Spring框架中监听器的使用,包括requestListener和httpSessionListener的创建与注册过程,探讨了它们如何在Web应用中捕获请求和会话事件。
705

被折叠的 条评论
为什么被折叠?



