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

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

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

獲取 Cookie

傳統(tǒng)獲取 Cookie

這是沒有 Spring 的時候,用 Servlet 來獲取(獲取所有的 Cookie)

  • Spring MVC 是基于 Servlet API 構(gòu)建的原始 Web 框架,也是在 Servlet 的基礎上實現(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ù)流,然后進行循環(huán)  
        Arrays.stream(cookies).forEach(ck -> System.out.println
        (ck.getName() + ":" + ck.getValue()));  
    }  
    return "獲取Cookie成功";  
}
  • HttpServletRequest 代表 HTTP 的請求,HTTP 請求里面有什么,這個對象里面就有什么
  • HttpServletResponse 代表 HTTP 的響應,HTTP 響應里面有什么,這個對象里面就有什么
    這兩個對象屬于 Spring 的內(nèi)置對象,需要就加上,不用就不用寫

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

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

之后刷新,可在服務端看到 Cookie 信息

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

簡潔獲取 Cookie(注解)

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

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

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

獲取 Session

Session 存儲和獲取

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

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

因為 session 是在服務器中進行存儲的,所以就不能像前面 Cookie 一樣可以直接“偽造”了。就需要學習如何設置 session

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

可以通過 Fiddler 進行觀察

之后就可以通過 SessionId 獲取到 Session 的值了

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

簡潔獲取 Session (1)

封裝一些冗余的過程

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

簡潔獲取 Session (2)

更進一步,能直接給到我們想要的 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

    Java forEach對原數(shù)組的操作過程

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

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

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

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

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

    Java中CountDownLatch工具類詳細解析

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

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

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

    使用SpringCloudApiGateway之支持Cors跨域請求

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

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

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

    java-collection中的null,isEmpty用法

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

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

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

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

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

最新評論

天镇县| 禹城市| 镇宁| 湟中县| 江川县| 楚雄市| 达拉特旗| 溧水县| 临夏市| 四会市| 两当县| 大兴区| 泗洪县| 永城市| 遂溪县| 科技| 江永县| 贵阳市| 康马县| 格尔木市| 遂川县| 沐川县| 富民县| 青河县| 靖边县| 甘肃省| 湖北省| 垦利县| 安图县| 海淀区| 武川县| 绥中县| 大兴区| 辰溪县| 堆龙德庆县| 宜阳县| 九江县| 新化县| 呼图壁县| 全椒县| 凤城市|