最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年09月01日 09:04:38   作者:矜持的折返跑  
這篇文章主要介紹了Spring MVC 中獲取session的幾種方法(小結(jié)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Spring MVC 中使用session是一種常見(jiàn)的操作,但是大家上網(wǎng)搜索一下可以看到獲取session的方式方法五花八門(mén),最近,自己終結(jié)了一下,將獲取session的方法記錄下來(lái),以便大家共同學(xué)習(xí)進(jìn)步。

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

直接在Spring MVC 的方法中將參數(shù)傳入:

public void getSessionAction(HttpSession session){
}

這種方法我再網(wǎng)上搜索時(shí)發(fā)現(xiàn)很多人并不推薦使用,但是在簡(jiǎn)單的測(cè)試中發(fā)現(xiàn),還是可以使用的,不推薦的具體原因很多文章中并沒(méi)有說(shuō)明。

第二種:將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 獲取

這種方式類(lèi)似于我們注入service類(lèi)的時(shí)候是一樣的,第一眼看到這種方式的時(shí)候我是拒絕的,因?yàn)槲覀兌贾溃瑂ervlet是默認(rèn)采用單例多線(xiàn)程的方式處理多用戶(hù)請(qǐng)求的,如果直接把它寫(xiě)成一個(gè)全局的變量,會(huì)不會(huì)是不安全的?不過(guò)這里·基于spring注解的,所以基本上可以確保線(xiàn)程的安全性。但是說(shuō)實(shí)在,我還是不放心,于是上網(wǎng)查了一些資料,最后看了看spring這部分的源碼(我會(huì)在另一片文章中詳細(xì)和大家討論的),最后發(fā)現(xiàn)這樣做是完全可行的。

第四種:使用RequestContextHolder類(lèi)獲取request,間接獲取到session

通過(guò)使用RequestContextHolder這個(gè)類(lèi)我們可以在不傳入HttpServletRequest,直接獲取到本次請(qǐng)求中的request。一般使用中我們會(huì)對(duì)它進(jìn)行封裝,做成一個(gè)工具方法進(jìn)行使用:

復(fù)制代碼 代碼如下:

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

注意進(jìn)行強(qiáng)轉(zhuǎn)成為ServletRequestAttributes,具體原因可以在源碼中找到(有點(diǎn)廢話(huà)了),大致的原理就是,RequestContextHolder類(lèi)中有兩個(gè)ThreadLocal保存當(dāng)前線(xiàn)程下的request,每次我們調(diào)用getRequestAttributes()的時(shí)候就會(huì)獲取到當(dāng)前的request,調(diào)用springmvc方法的時(shí)候沒(méi)有傳入request,那么這個(gè)request是在哪里獲取到的呢?看源碼可以知道,是在一個(gè)processRequest(HttpServletRequest request, HttpServletResponse response)這個(gè)方法里面,每次挑用doget(),dopost()的時(shí)候都會(huì)條用這個(gè)方法,將我們的request,response傳進(jìn)去。

第五種: 使用@SessionAttributes

確切來(lái)說(shuō)這種方式并不是直接獲取到session,但是我們可以通過(guò)這種方式將我們想要值放入到session中去。

其實(shí)總結(jié)是一個(gè)好習(xí)慣,在總結(jié)獲取session的方法過(guò)程中,看到了去多相關(guān)的博文,學(xué)習(xí)了一些意想不到的東西,所以想要拿出來(lái),大家一起討論。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java讀取http請(qǐng)求中的body實(shí)例代碼

    java讀取http請(qǐng)求中的body實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇java讀取http請(qǐng)求中的body實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • Mybatis實(shí)現(xiàn)批量操作8種小結(jié)

    Mybatis實(shí)現(xiàn)批量操作8種小結(jié)

    本文對(duì)Mybatis的五種批處理方式進(jìn)行了性能測(cè)試,包括批量新增和批量修改,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Spring?Boot自定義?Starter并推送到遠(yuǎn)端公服的詳細(xì)代碼

    Spring?Boot自定義?Starter并推送到遠(yuǎn)端公服的詳細(xì)代碼

    這篇文章主要介紹了Spring?Boot自定義?Starter并推送到遠(yuǎn)端公服,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • Java?詳解Map集合之HashMap和TreeMap

    Java?詳解Map集合之HashMap和TreeMap

    本章具體介紹了HashMap、TreeMap兩種集合的基本使用方法和區(qū)別,圖解穿插代碼實(shí)現(xiàn)。?JAVA成仙路從基礎(chǔ)開(kāi)始講,后續(xù)會(huì)講到JAVA高級(jí),中間會(huì)穿插面試題和項(xiàng)目實(shí)戰(zhàn),希望能給大家?guī)?lái)幫助
    2022-03-03
  • 使用SpringBoot配置多數(shù)據(jù)源的經(jīng)驗(yàn)分享

    使用SpringBoot配置多數(shù)據(jù)源的經(jīng)驗(yàn)分享

    這篇文章主要介紹了使用SpringBoot配置多數(shù)據(jù)源的經(jīng)驗(yàn)分享,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • java編程數(shù)據(jù)類(lèi)型全面詳解教程新手必入

    java編程數(shù)據(jù)類(lèi)型全面詳解教程新手必入

    這篇文章主要為大家介紹了java編程數(shù)據(jù)類(lèi)型全面詳解教程,強(qiáng)烈推薦新手入,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • Java中單例模式詳解

    Java中單例模式詳解

    這篇文章主要介紹了Java中單例模式詳解,單例模式包括了懶漢式單例、餓漢式單例、登記式單例三種,想要了解的朋友可以了解一下。
    2016-11-11
  • Java版畫(huà)板的實(shí)現(xiàn)方法

    Java版畫(huà)板的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Java版畫(huà)板的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • java?Map.Entry的使用示例

    java?Map.Entry的使用示例

    Map.Entry是Java中Map接口的嵌套接口,它提供了獲取鍵和值的方法及遍歷和操作Map的鍵值對(duì),本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-11-11
  • Java 無(wú)參數(shù)構(gòu)造函數(shù)的應(yīng)用

    Java 無(wú)參數(shù)構(gòu)造函數(shù)的應(yīng)用

    本篇文章主要介紹了Java 無(wú)參數(shù)構(gòu)造函數(shù)的應(yīng)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04

最新評(píng)論

什邡市| 乌海市| 福海县| 中牟县| 龙井市| 宣威市| 手机| 孝义市| 宁化县| 定襄县| 富锦市| 青冈县| 杭锦后旗| 犍为县| 城固县| 汉寿县| 长寿区| 信阳市| 小金县| 保定市| 鲁甸县| 淮南市| 北安市| 温泉县| 康乐县| 海晏县| 蕉岭县| 桃源县| 东平县| 那坡县| 习水县| 资源县| 平山县| 望江县| 拉孜县| 灵寿县| 武冈市| 嘉兴市| 铁岭县| 个旧市| 花莲市|