JS 与 trick 代码的运用及解析全攻略
1149
2022-10-20
SpringBoot中HttpSessionListener的简单使用方式
目录HttpSessionListener的使用方式session监听实现类controller调用注册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());
}
/**
*http:// 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你好";
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~