5. Spring Session 监听器-HttpSessionListener
程序员文章站
2024-03-20 10:20:52
...
我们知道在普通web 应用中, 是可以自定义session监听器的, 可以监听session的创建和销毁过程, 然后在session的创建和销毁时做一些初始化或清理操作. spring session中也支持自定义session 监听器, 而且配置更简单.
1. HttpSessionListener 定义
自定义监听器时需要实现HttpSessionListener接口, 所以我们首先看一下HttpSessionListener 接口的定义. 接口只定义了两个方法, 分别用于监听session 的创建和销毁.
ackage javax.servlet.http;
import java.util.EventListener;
public interface HttpSessionListener extends EventListener {
// 监听session 的创建
default void sessionCreated(HttpSessionEvent se) {
}
// 监听session 的销毁
default void sessionDestroyed(HttpSessionEvent se) {
}
}
2. 自定义SessionListener
2.1 自定义session Listener
自定义sessionListener 需要实现HttpSessionListener接口, 并实现创建或销毁方法.
/**
* @Description: 自定义session 监听器, 监听session的创建和销毁
* @author: zongf
* @date: 2019-04-17 08:53
*/
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println(LocalDateTime.now() + "-" + se.getSession().getId() + "-created");
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println(LocalDateTime.now() + "-" + se.getSession().getId() + "-destroyed");
}
}
2.2 注册监听器
只需要将监听器实例注册到spring 容器中, 即可实现对session的监听. 笔者将session相关的配置都放着类SessionConfig.java中.
@Bean
public MyHttpSessionListener myHttpSessionListener(){
return new MyHttpSessionListener();
}
3. 测试输出
为了能看到session的销毁, 笔者将session 失效时间设置为30秒. 但是需要注意的是, 通常生产环境并不会这样设置, 一般设置都是30分钟以上.
2019-04-17T08:58:04.820-1674c1f3-d540-4e43-9c10-2131ccd5f571-created
2019-04-17T08:58:34.984-1674c1f3-d540-4e43-9c10-2131ccd5f571-destroyed
上一篇: 2018 计蒜之道 初赛 第五场
下一篇: 是否同一棵二叉搜索树