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

