SpringBoot中HttpSessionListener的简单使⽤⽅式
⽬录
HttpSessionListener的使⽤⽅式
session监听实现类
controller调⽤session怎么记忆
注册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持续时间,单位为秒
System.out.println("-----------Session已创建------------------");
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
String name = (Session().getAttribute("name");
System.out.println("name= "+ name);
System.out.println("-----------Session已销毁------------------");
}
}
controller调⽤
@RequestMapping("/sessionTest")
@ResponseBody
public void sessionTest(HttpServletRequest request){
/
/销毁session
}
注意点:
1、Session(),获取即创建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();
System.out.println("session创建===ID===="+Id());
}
/**
* session销毁
*/
@Override
public void sessionDestroyed(HttpSessionEvent e) {
HttpSession Session();
System.out.println("销毁的sessionID===="+Id());
}
}
启动类上已经加了注解@ServletComponentScan
访问接⼝:
@RestController
public class HelloController {
@RequestMapping("/hello")
public String handle01(){
return "nihao你好";
}
}
这样写之后,发现第⼀次访问时,控制台并不会打印:
System.out.println("session创建===ID===="+Id());
原因
在访问接⼝时,形参要带上HttpSession session.
如下:
@RestController
public class HelloController {
@RequestMapping("/hello")
public String handle01(HttpSession session){
return "nihao你好";
}
}
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。