SpringBoot中HttpSessionListener的簡單使用方式
HttpSessionListener的使用方式
session監(jiān)聽實現(xiàn)類
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) {
? ? ?? ?//設(shè)置session持續(xù)時間,單位為秒
? ? ? ? se.getSession().setMaxInactiveInterval(10);
? ? ? ? System.out.println("-----------Session已創(chuàng)建------------------");
? ? }
? ? @Override
? ? public void sessionDestroyed(HttpSessionEvent se) {
? ? ? ? String name = (String)se.getSession().getAttribute("name");
? ? ? ? System.out.println("name= "+ name);
? ? ? ? System.out.println("-----------Session已銷毀------------------");
? ? }
}controller調(diào)用
? ? @RequestMapping("/sessionTest")
? ? @ResponseBody
? ? public void sessionTest(HttpServletRequest request){
? ? ? ? request.getSession().setAttribute("name","zwq");
? ? ? ? //銷毀session
? ? ? ? request.getSession().invalidate();
? ? }注意點:
1、request.getSession(),獲取即創(chuàng)建session,會觸發(fā)session監(jiān)聽實現(xiàn)類中的sessionCreated方法;
2、session過了有效時間或主動使用invalidate方法銷毀,會觸發(fā)session監(jiān)聽實現(xiàn)類中的sessionDestroyed方法;
3、使用監(jiān)聽器一定要確??梢员籹pringboot掃描到并打包成bean,一般來說在監(jiān)聽器實現(xiàn)類前加 @Component注解并保證該類在程序掃描范圍內(nèi)即可。
注冊HttpSessionListener失效原因
問題描述
監(jiān)聽器:
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
?? ?/**
?? ? * session創(chuàng)建
?? ? */
?? ?@Override
?? ?public void sessionCreated(HttpSessionEvent e) {
?? ??? ?HttpSession session=e.getSession();
?? ??? ?System.out.println("session創(chuàng)建===ID===="+session.getId());
?? ?}
?? ?/**
?? ? * session銷毀
?? ? */
?? ?@Override
?? ?public void sessionDestroyed(HttpSessionEvent e) {
?? ??? ?HttpSession session=e.getSession();
?? ??? ?System.out.println("銷毀的sessionID===="+session.getId());
?? ?}
}啟動類上已經(jīng)加了注解@ServletComponentScan
訪問接口:
@RestController
public class HelloController {
? ? @RequestMapping("/hello")
? ? public String handle01(){
? ? ? ? return "nihao你好";
? ? }
}這樣寫之后,發(fā)現(xiàn)第一次訪問時,控制臺并不會打印:
System.out.println("session創(chuàng)建===ID===="+session.getId());原因
在訪問接口時,形參要帶上HttpSession session.
如下:
@RestController
public class HelloController {
? ? @RequestMapping("/hello")
? ? public String handle01(HttpSession session){
? ? ? ? return "nihao你好";
? ? }
}以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Mybatis-Plus攔截器實現(xiàn)MySQL數(shù)據(jù)加解密的示例代碼
用戶的一些敏感數(shù)據(jù),例如手機號、郵箱、身份證等信息,在數(shù)據(jù)庫以明文存儲時會存在數(shù)據(jù)泄露的風(fēng)險,因此需要進行加密,解密等功能,接下來本文就給大家介紹基于Mybatis-Plus攔截器實現(xiàn)MySQL數(shù)據(jù)加解密,需要的朋友可以參考下2023-07-07
詳解如何在spring boot中使用spring security防止CSRF攻擊
這篇文章主要介紹了詳解如何在spring boot中使用spring security防止CSRF攻擊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
SpringBoot+Vue+Axios+BootStrap實現(xiàn)圖書的增刪改查功能示例
本文主要介紹了SpringBoot+Vue+Axios+BootStrap實現(xiàn)圖書的增刪改查功能,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
Spring?Cloud?Sleuth?和?Zipkin?進行分布式跟蹤使用小結(jié)
分布式跟蹤是一種機制,我們可以使用它跟蹤整個分布式系統(tǒng)中的特定請求,分布式跟蹤允許您跟蹤分布式系統(tǒng)中的請求,本文給大家介紹Spring?Cloud?Sleuth?和?Zipkin?進行分布式跟蹤使用小結(jié),感興趣的朋友一起看看吧2022-03-03
mybatis if傳入字符串?dāng)?shù)字踩坑記錄及解決
這篇文章主要介紹了mybatis if傳入字符串?dāng)?shù)字踩坑記錄及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
java中JSON字符串轉(zhuǎn)換為Map集合的兩種方法
本文主要介紹了java中JSON字符串轉(zhuǎn)換為Map集合,包含了兩種方法,這種需求可能涉及到從外部接口獲取數(shù)據(jù),或者在程序中處理配置信息等,感興趣的可以了解一下2024-07-07
spring如何實現(xiàn)依賴注入DI(spring-test方式)
本文主要介紹如何實現(xiàn)spring 的依賴注入,并且淺顯的講述一下注入需要注意的事項。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

