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

Spring獲取Cookie和Session(@CookieValue()和@SessionAttribute())

 更新時(shí)間:2026年01月13日 11:10:46   作者:椰椰椰耶  
本文主要介紹了Spring獲取Cookie和Session(@CookieValue()和@SessionAttribute()),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

獲取 Cookie

傳統(tǒng)獲取 Cookie

這是沒(méi)有 Spring 的時(shí)候,用 Servlet 來(lái)獲?。ǐ@取所有的 Cookie)

  • Spring MVC 是基于 Servlet API 構(gòu)建的原始 Web 框架,也是在 Servlet 的基礎(chǔ)上實(shí)現(xiàn)的
@RequestMapping("/getcookie")  
public String getCookie(HttpServletRequest request, 
						HttpServletResponse response) {  
    //String name = request.getParameter("name");  
    Cookie cookies[] = request.getCookies();  
    if (cookies != null) {  
        //將 Cookie 轉(zhuǎn)成了數(shù)據(jù)流,然后進(jìn)行循環(huán)  
        Arrays.stream(cookies).forEach(ck -> System.out.println
        (ck.getName() + ":" + ck.getValue()));  
    }  
    return "獲取Cookie成功";  
}
  • HttpServletRequest 代表 HTTP 的請(qǐng)求,HTTP 請(qǐng)求里面有什么,這個(gè)對(duì)象里面就有什么
  • HttpServletResponse 代表 HTTP 的響應(yīng),HTTP 響應(yīng)里面有什么,這個(gè)對(duì)象里面就有什么
    這兩個(gè)對(duì)象屬于 Spring 的內(nèi)置對(duì)象,需要就加上,不用就不用寫

Cookie 是一個(gè)數(shù)組,所以進(jìn)行循環(huán)打印

進(jìn)入網(wǎng)頁(yè)后,Cookie 可以直接進(jìn)行修改(F12)。然后在里面添加信息,name=bite,value=666,隨后保存

之后刷新,可在服務(wù)端看到 Cookie 信息

  • Spring MVC 是基于 Servlet API 構(gòu)建的原始 Web 框架,也是在 Servlet 的基礎(chǔ)上實(shí)現(xiàn)的
  • HttpServletRequest,HttpServletResponse 是 Servlet 提供的兩個(gè)類,是 Spring MVC 方法的內(nèi)置對(duì)象,需要時(shí)直接在方法中添加聲明即可
  • HttpServletRequest 對(duì)象代表客戶端的請(qǐng)求,當(dāng)客戶端通過(guò) HTTP 協(xié)議訪問(wèn)服務(wù)器時(shí),HTTP 請(qǐng)求頭中的所有信息都封裝在這個(gè)對(duì)象中,通過(guò)這個(gè)對(duì)象提供的方法,可以獲得客戶端請(qǐng)求的所有信息
  • HttpServletResponse 對(duì)象代表服務(wù)器的響應(yīng)。HTTP 響應(yīng)的信息都在這個(gè)對(duì)象中,比如向客戶端發(fā)送的數(shù)據(jù),響應(yīng)頭,狀態(tài)碼等。通過(guò)這個(gè)對(duì)象提供的方法,可以獲得服務(wù)器響應(yīng)的所以內(nèi)容
  • Spring MVC 在這兩個(gè)對(duì)象的基礎(chǔ)上進(jìn)行封裝,給我們提供更加簡(jiǎn)單的使用方法

簡(jiǎn)潔獲取 Cookie(注解)

Spring MVC 在這兩個(gè)對(duì)象的基礎(chǔ)上進(jìn)行封裝,給我們提供更加簡(jiǎn)單的使用方法
上面獲取的話,就是獲取的所有的 Cookie,而如果想要獲取某個(gè) Cookie,就需要使用 @CookieValue

@RequestMapping("/getcookie2")  
public String getCookie2(@CookieValue("bite") String bite) {  
    return "從Cookie中獲取值, bite:"+bite;  
}

@CookieValue 里面的值,就是你要獲取的 Cookie

獲取 Session

Session 存儲(chǔ)和獲取

傳統(tǒng)方式也是用 Servlet 進(jìn)行實(shí)現(xiàn)的

@RequestMapping("/getsession")  
public String getsession(HttpServletRequest request) {  
    //從 Cookie 中獲取到了 SessionId,根據(jù) Session 獲取 Session對(duì)象  
    HttpSession session = request.getSession();  
    String name = (String) session.getAttribute("name");  
    return "從session中獲取name:"+name;  
}
  • 第四行是從 Cookie 中獲取到 SessionId,然后根據(jù) SessionId 獲取到 Session 對(duì)象
  • 然后通過(guò) getAttribute 來(lái)獲取你要拿的值

因?yàn)?session 是在服務(wù)器中進(jìn)行存儲(chǔ)的,所以就不能像前面 Cookie 一樣可以直接“偽造”了。就需要學(xué)習(xí)如何設(shè)置 session

@RequestMapping("/setsession")  
public String setSession(HttpServletRequest request){  
    //從 Cookie 中獲取到了SessionId,根據(jù) SessionId 獲取Session對(duì)象
    //如果沒(méi)有獲取到,就會(huì)創(chuàng)建一個(gè)Session對(duì)象  
    HttpSession session = request.getSession();  
    session.setAttribute("name","zhangsan");  
    return "設(shè)置session成功";  
}
  • 首先是在 Cookie 中獲取 SessionId,然后根據(jù) SessionId 獲取 Session 對(duì)象。如果沒(méi)有獲取到,就會(huì)創(chuàng)建一個(gè) Session 對(duì)象
  • 創(chuàng)建好 Session 之后,就可以進(jìn)行設(shè)置了
    • 使用 setAttribute 進(jìn)行設(shè)置,前面是 name,后面是 value

可以通過(guò) Fiddler 進(jìn)行觀察

之后就可以通過(guò) SessionId 獲取到 Session 的值了

如果擅自將下面的 SessionId 改了,就獲取不到 Session

簡(jiǎn)潔獲取 Session (1)

封裝一些冗余的過(guò)程

@RequestMapping("/getsession2")  
public String getsession2(HttpSession session){  
    String name = (String) session.getAttribute("name");  
    return "從session中獲取name"+name;  
}
  • 這里 HttpSession 就直接省略了自己 getSession 的過(guò)程,直接就給我們提供了一個(gè) Session

簡(jiǎn)潔獲取 Session (2)

更進(jìn)一步,能直接給到我們想要的 name 的值嗎

@RequestMapping("/getsession3")  
public String getsession3(@SessionAttribute("name") String name){  
    //String name = (String) session.getAttribute("name");  
    return "從session中獲取name:"+name;  
}

這里的 @SessionAttribute 里面的值就是想要獲取的 Session 的值,省略掉了指定 name 的步驟

到此這篇關(guān)于Spring獲取Cookie和Session(@CookieValue()和@SessionAttribute())的文章就介紹到這了,更多相關(guān)Spring獲取Cookie和Session內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java forEach對(duì)原數(shù)組的操作過(guò)程

    Java forEach對(duì)原數(shù)組的操作過(guò)程

    forEach對(duì)于基本數(shù)據(jù)類型,是直接賦值,對(duì)于引用數(shù)據(jù)類型,是引用地址值,forEach遍歷時(shí),是創(chuàng)建的臨時(shí)變量,引用的數(shù)據(jù)地址,本文給大家介紹Java forEach對(duì)原數(shù)組的操作過(guò)程,感興趣的朋友一起看看吧
    2024-02-02
  • java時(shí)間戳轉(zhuǎn)換為日期格式的多種方式

    java時(shí)間戳轉(zhuǎn)換為日期格式的多種方式

    本文介紹了五種將Java時(shí)間戳轉(zhuǎn)換為日期格式的方法,包括使用Date類、LocalDateTime類、Instant類、DateUtils類以及自定義時(shí)區(qū),每種方法都有其適用場(chǎng)景,可以根據(jù)具體需求選擇合適的方法,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 教你如何用Java根據(jù)日期生成流水號(hào)

    教你如何用Java根據(jù)日期生成流水號(hào)

    這篇文章主要介紹了教你如何用Java根據(jù)日期生成流水號(hào),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java中CountDownLatch工具類詳細(xì)解析

    Java中CountDownLatch工具類詳細(xì)解析

    這篇文章主要介紹了Java中CountDownLatch工具類詳細(xì)解析,創(chuàng)建CountDownLatch對(duì)象時(shí),會(huì)傳入一個(gè)count數(shù)值,該對(duì)象每次調(diào)用countDown()方法會(huì)使count?--?,就是count每次減1,需要的朋友可以參考下
    2023-11-11
  • 淺談Spring單例Bean與單例模式的區(qū)別

    淺談Spring單例Bean與單例模式的區(qū)別

    這篇文章主要介紹了淺談Spring單例Bean與單例模式的區(qū)別,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • 使用SpringCloudApiGateway之支持Cors跨域請(qǐng)求

    使用SpringCloudApiGateway之支持Cors跨域請(qǐng)求

    這篇文章主要介紹了使用SpringCloudApiGateway之支持Cors跨域請(qǐng)求的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java?Map循環(huán)遍歷的7種方式與性能對(duì)比

    Java?Map循環(huán)遍歷的7種方式與性能對(duì)比

    這篇文章主要為大家詳細(xì)介紹了Java中Map的七種遍歷方式,包括entrySet+for-each,keySet+for-each,只遍歷value,Iterator+entrySet等,文內(nèi)分析了每種方式的優(yōu)缺點(diǎn)和適用場(chǎng)景,希望的可以了解下
    2026-05-05
  • java-collection中的null,isEmpty用法

    java-collection中的null,isEmpty用法

    這篇文章主要介紹了java-collection中的null,isEmpty用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java使用easyExcel導(dǎo)出數(shù)據(jù)及單元格多張圖片

    Java使用easyExcel導(dǎo)出數(shù)據(jù)及單元格多張圖片

    除了平時(shí)簡(jiǎn)單的數(shù)據(jù)導(dǎo)出需求外,我們也經(jīng)常會(huì)遇到一些有固定格式或者模板要求的數(shù)據(jù)導(dǎo)出,下面這篇文章主要給大家介紹了關(guān)于Java使用easyExcel導(dǎo)出數(shù)據(jù)及單元格多張圖片的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • java中hashCode、equals的使用方法教程

    java中hashCode、equals的使用方法教程

    hashCode()和equals()定義在Object類中,這個(gè)類是所有java類的基類,所以所有的java類都繼承這兩個(gè)方法。下面這篇文章主要給大家介紹了關(guān)于java中hashCode、equals的使用方法,需要的朋友可以參考下。
    2017-12-12

最新評(píng)論

长武县| 濮阳县| 香格里拉县| 五华县| 搜索| 五华县| 阳山县| 乌鲁木齐县| 中牟县| 寿阳县| 梓潼县| 交口县| 缙云县| 卫辉市| 巴林右旗| 上蔡县| 乌海市| 娄烦县| 山阴县| 抚远县| 中卫市| 河西区| 沙雅县| 本溪| 玉树县| 德令哈市| 两当县| 广平县| 东安县| 兴国县| 额敏县| 南陵县| 黄冈市| 杭州市| 杂多县| 贡山| 石泉县| 乌兰浩特市| 乌拉特前旗| 开阳县| 玉屏|