更新時(shí)間:2022-03-25 10:12:30 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1693次
很多初學(xué)Java的小伙伴對(duì)SpringMVC獲取session的方法還不是很了解,下面就由小編來(lái)給大家進(jìn)行介紹。
第一種:將HttpSession作為Spring MVC的方法參數(shù)傳入,直接獲取。
直接在Spring MVC 的方法中將參數(shù)傳入:
public void getSessionAction(HttpSession session){
}
第二種:將HttpServletRequest作為Spring MVC 的方法參數(shù),間接獲取
先是獲取到request,然后通過(guò)request間接的獲取到session,代碼如下:
public void getSessionAction(HttpServletRequest request){
HttpSession session = request.getSession();
}
這種方法時(shí)比較常見(jiàn)的一種,但是有些人會(huì)覺(jué)得這種比較麻煩,因?yàn)槊看问褂胹ession都需要傳入一個(gè)參數(shù)。
第三種:通過(guò)@Autowired HttpServletRequest request 獲取
這種方式類似于我們注入service類的時(shí)候是一樣的,有些小伙伴第一眼看到這種方式的時(shí)候是拒絕的,因?yàn)槲覀兌贾溃瑂ervlet是默認(rèn)采用單例多線程的方式處理多用戶請(qǐng)求的,如果直接把它寫(xiě)成一個(gè)全局的變量,會(huì)不會(huì)是不安全的?不過(guò)這里·基于spring注解的,所以基本上可以確保線程的安全性。
第四種:使用RequestContextHolder類獲取request,間接獲取到session
通過(guò)使用RequestContextHolder這個(gè)類我們可以在不傳入HttpServletRequest,直接獲取到本次請(qǐng)求中的request。一般使用中我們會(huì)對(duì)它進(jìn)行封裝,做成一個(gè)工具方法進(jìn)行使用。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)