亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring MVC 中獲取session的幾種方法(小結)

發布時間:2020-09-27 17:49:05 來源:腳本之家 閱讀:193 作者:矜持的折返跑 欄目:編程語言

Spring MVC 中使用session是一種常見的操作,但是大家上網搜索一下可以看到獲取session的方式方法五花八門,最近,自己終結了一下,將獲取session的方法記錄下來,以便大家共同學習進步。

第一種:將HttpSession作為Spring MVC 的方法參數傳入,直接獲取。

直接在Spring MVC 的方法中將參數傳入:

public void getSessionAction(HttpSession session){
}

這種方法我再網上搜索時發現很多人并不推薦使用,但是在簡單的測試中發現,還是可以使用的,不推薦的具體原因很多文章中并沒有說明。

第二種:將HttpServletRequest作為Spring MVC 的方法參數,間接獲取

先是獲取到request,然后通過request間接的獲取到session,代碼如下:

public void getSessionAction(HttpServletRequest request){
 HttpSession session = request.getSession();
}

這種方法時比較常見的一種,但是有些人會覺得這種比較麻煩,因為每次使用session都需要傳入一個參數(你到底是有多懶),于是就有了第三種方法

第三種:通過@Autowired HttpServletRequest request 獲取

這種方式類似于我們注入service類的時候是一樣的,第一眼看到這種方式的時候我是拒絕的,因為我們都知道,servlet是默認采用單例多線程的方式處理多用戶請求的,如果直接把它寫成一個全局的變量,會不會是不安全的?不過這里·基于spring注解的,所以基本上可以確保線程的安全性。但是說實在,我還是不放心,于是上網查了一些資料,最后看了看spring這部分的源碼(我會在另一片文章中詳細和大家討論的),最后發現這樣做是完全可行的。

第四種:使用RequestContextHolder類獲取request,間接獲取到session

通過使用RequestContextHolder這個類我們可以在不傳入HttpServletRequest,直接獲取到本次請求中的request。一般使用中我們會對它進行封裝,做成一個工具方法進行使用:

復制代碼 代碼如下:

((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();

注意進行強轉成為ServletRequestAttributes,具體原因可以在源碼中找到(有點廢話了),大致的原理就是,RequestContextHolder類中有兩個ThreadLocal保存當前線程下的request,每次我們調用getRequestAttributes()的時候就會獲取到當前的request,調用springmvc方法的時候沒有傳入request,那么這個request是在哪里獲取到的呢?看源碼可以知道,是在一個processRequest(HttpServletRequest request, HttpServletResponse response)這個方法里面,每次挑用doget(),dopost()的時候都會條用這個方法,將我們的request,response傳進去。

第五種: 使用@SessionAttributes

確切來說這種方式并不是直接獲取到session,但是我們可以通過這種方式將我們想要值放入到session中去。

其實總結是一個好習慣,在總結獲取session的方法過程中,看到了去多相關的博文,學習了一些意想不到的東西,所以想要拿出來,大家一起討論。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洪湖市| 昌宁县| 黎城县| 莲花县| 聊城市| 拜泉县| 右玉县| 安岳县| 新野县| 宁波市| 伽师县| 射洪县| 修水县| 铜川市| 台州市| 万山特区| 南靖县| 民勤县| 嫩江县| 淄博市| 呼图壁县| 鄂托克旗| 秭归县| 江永县| 枣庄市| 仁化县| 九寨沟县| 韩城市| 宁晋县| 和顺县| 黄大仙区| 吐鲁番市| 罗甸县| 襄城县| 城市| 南川市| 新巴尔虎右旗| 永丰县| 分宜县| 民权县| 葵青区|