SpringBoot中HttpSessionListener的简单使用方式
HttpSessionListener的使用方式
session监听实现类
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@Component
public class MySessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
//设置session持续时间,单位为秒
se.getSession().setMaxInactiveInterval(10);
System.out.println("-----------Session已创建------------------");
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
String name = (String)se.getSession().getAttribute("name");
System.out.println("name= "+ name);
System.out.println("-----------Session已销毁------------------");
}
}controller调用
@RequestMapping("/sessionTest")
@ResponseBody
public void sessionTest(HttpServletRequest request){
request.getSession().setAttribute("name","zwq");
//销毁session
request.getSession().invalidate();
}注意点:
1、request.getSession(),获取即创建session,会触发session监听实现类中的sessionCreated方法;
2、session过了有效时间或主动使用invalidate方法销毁,会触发session监听实现类中的sessionDestroyed方法;
3、使用监听器一定要确保可以被springboot扫描到并打包成bean,一般来说在监听器实现类前加 @Component注解并保证该类在程序扫描范围内即可。
注册HttpSessionListener失效原因
问题描述
监听器:
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
/**
* session创建
*/
@Override
public void sessionCreated(HttpSessionEvent e) {
HttpSession session=e.getSession();
System.out.println("session创建===ID===="+session.getId());
}
/**
* session销毁
*/
@Override
public void sessionDestroyed(HttpSessionEvent e) {
HttpSession session=e.getSession();
System.out.println("销毁的sessionID===="+session.getId());
}
}启动类上已经加了注解@ServletComponentScan
访问接口:
@RestController
public class HelloController {
@RequestMapping("/hello")
public String handle01(){
return "nihao你好";
}
}这样写之后,发现第一次访问时,控制台并不会打印:
System.out.println("session创建===ID===="+session.getId());原因
在访问接口时,形参要带上HttpSession session.
如下:
@RestController
public class HelloController {
@RequestMapping("/hello")
public String handle01(HttpSession session){
return "nihao你好";
}
}以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
基于Mybatis-Plus拦截器实现MySQL数据加解密的示例代码
用户的一些敏感数据,例如手机号、邮箱、身份证等信息,在数据库以明文存储时会存在数据泄露的风险,因此需要进行加密,解密等功能,接下来本文就给大家介绍基于Mybatis-Plus拦截器实现MySQL数据加解密,需要的朋友可以参考下2023-07-07
详解如何在spring boot中使用spring security防止CSRF攻击
这篇文章主要介绍了详解如何在spring boot中使用spring security防止CSRF攻击,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-05-05
SpringBoot+Vue+Axios+BootStrap实现图书的增删改查功能示例
本文主要介绍了SpringBoot+Vue+Axios+BootStrap实现图书的增删改查功能,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-12-12
Spring Cloud Sleuth 和 Zipkin 进行分布式跟踪使用小结
分布式跟踪是一种机制,我们可以使用它跟踪整个分布式系统中的特定请求,分布式跟踪允许您跟踪分布式系统中的请求,本文给大家介绍Spring Cloud Sleuth 和 Zipkin 进行分布式跟踪使用小结,感兴趣的朋友一起看看吧2022-03-03
spring如何实现依赖注入DI(spring-test方式)
本文主要介绍如何实现spring 的依赖注入,并且浅显的讲述一下注入需要注意的事项。如有错误或未考虑完全的地方,望不吝赐教2022-03-03


最新评论