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

老生常談java中cookie的使用

 更新時間:2016年12月10日 10:00:41   投稿:jingxian  
下面小編就為大家?guī)硪黄仙U刯ava中cookie的使用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1 什么是cookie

瀏覽器與WEB服務器之間是使用HTTP協(xié)議進行通信的,當某個用戶發(fā)出頁面請求時,WEB服務器只是簡單的進行響應,然后就關(guān)閉與該用戶的連接。因此當一個請求發(fā)送到WEB服務器時,無論其是否是第一次來訪,服務器都會把它當作第一次來對待,這樣的不好之處可想而知。為了彌補這個缺陷,Netscape開發(fā)出了cookie這個有效的工具來保存某個用戶的識別信息,因此人們昵稱為“小甜餅”。cookies是一種WEB服務器通過瀏覽器在訪問者的硬盤上存儲信息的手段:Netscape Navigator使用一個名為cookies.txt本地文件保存從所有站點接收的Cookie信息;而IE瀏覽器把Cookie信息保存在類似于C:\windows\cookies的目錄下。當用戶再次訪問某個站點時,服務端將要求瀏覽器查找并返回先前發(fā)送的Cookie信息,來識別這個用戶。

2 cookie的四個屬性

max-age   指定Ccookie的生存周期(以秒為單位)!默認情況下,Cookie的值只在瀏覽器的會話期間存在,當用戶退出瀏覽器這些值就消失了!

path   指定與Cookie關(guān)聯(lián)在一起的網(wǎng)頁.默認情況下,cookie會和創(chuàng)建它的網(wǎng)頁以及與這個網(wǎng)頁處于同一個目錄下的網(wǎng)頁和處于該目錄下的子目錄關(guān)聯(lián)。

domain   設置訪問域   舉個例子:位于order.example.com的服務器要讀取catalog.example.com設置的cookie.這里就要引入domain屬性,假定由位于catalog.example.com的頁面創(chuàng)  的cookie把自己的path屬性設置為"/",把domain屬性設置為".example.com",那么所有位于"catalog.example.com"的網(wǎng)頁和所有位于"orders.example.com"的網(wǎng)頁以及所有位于example.com域的其他服務器上得網(wǎng)頁都能夠訪問這個cookie.如果沒有設置cookie的domain值,該屬性的默認值就是創(chuàng)建cookie的網(wǎng)頁所在的  服務器的主機名。   注意:不能將一個cookie的域設置成服務器所在的域之外的域.

seure   指定在網(wǎng)絡上如何傳輸cookie的值

3 java Cookie操作

創(chuàng)建Cookie

// new一個Cookie對象,鍵值對為參數(shù) 
Cookie cookie = new Cookie("key", "cookie的value值"); 
   如果cookie的值中含有中文時,需要對cookie進行編碼,不然會產(chǎn)生亂碼,使用
      URLEncoder.encode("cookie的value值","utf-8");


// 設置Cookie最大生存時間,以秒為單位,負數(shù)的話為瀏覽器進程,關(guān)閉瀏覽器Cookie消失 
cookie.setMaxAge(*24*60*60); // 一天 
// 將Cookie添加到Response中,使之生效 
response.addCookie(cookie); //addCookie后,如果已經(jīng)存在相同名字的cookie,則最新的覆蓋舊的cookie

注意:在Struts中可以使用 ServletActionContext.getResponse()獲得respone對象

讀取cookie

讀取Cookie只能從request中獲取全部Cookie,然后循環(huán)迭代。

在Struts中可以使用 ServletActionContext.getRequest()獲得request對象

// 從request中獲取Cookie,拿到的是一個Cookie數(shù)組 
Cookie[] cookies = request.getCookies(); 
// 然后迭代之 
if (cookies != null && cookies.length > 0) { //如果沒有設置過Cookie會返回null 
  for (Cookie cookie : cookies) {...} 
}

刪除cookie

刪除Cookie的話,只需要將Cookie的生存期設為0即可

Cookie[] cookies = request.getCookies(); 
if (cookies != null && cookies.length > 0) { 
  for (Cookie cookie : cookies) { 
    String name = cookie.getName(); 
    // 找到需要刪除的Cookie 
    if (name.compareTo("target-key") == 0) { 
      // 設置生存期為0 
      cookie.setMaxAge(0); 
      // 設回Response中生效 
      response.addCookie(cookie); 
    } 
  } 
} 

4 cookie的setPath方法使用:

正常的cookie只能在一個應用中共享,即一個cookie只能由創(chuàng)建它的應用獲得。

1.可在同一應用服務器內(nèi)共享方法:設置cookie.setPath("/");

本機tomcat/webapp下面有兩個應用:webapp_a和webapp_b,

1)原來在webapp_a下面設置的cookie,在webapp_b下面獲取不到,path默認是產(chǎn)生cookie的應用的路徑。

2)若在webapp_a下面設置cookie的時候,增加一條cookie.setPath("/");或者cookie.setPath("/webapp_b/");

就可以在webapp_b下面獲取到cas設置的cookie了。

3)此處的參數(shù),是相對于應用服務器存放應用的文件夾的根目錄而言的(比如tomcat下面的webapp),因此cookie.setPath("/");之后,可以在webapp文件夾下的所有應用共享cookie,而cookie.setPath("/webapp_b/");

是指cas應用設置的cookie只能在webapp_b應用下的獲得,即便是產(chǎn)生這個cookie的webapp_a應用也不可以。

4)設置cookie.setPath("/webapp_b/jsp")或者cookie.setPath("/webapp_b/jsp/")的時候,只有在webapp_b/jsp下面可以獲得cookie,在webapp_b下面但是在jsp文件夾外的都不能獲得cookie。

5)設置cookie.setPath("/webapp_b");,是指在webapp_b下面才可以使用cookie,這樣就不可以在產(chǎn)生cookie的應用webapp_a下面獲取cookie了

6)有多條cookie.setPath("XXX");語句的時候,起作用的以最后一條為準。

5 cookie.setDomain方法設計跨域共享

A機所在的域:home.langchao.com,A有應用webapp_a

B機所在的域:jszx.com,B有應用webapp_b

1)在webapp_a下面設置cookie的時候,增加cookie.setDomain(".jszx.com");,這樣在webapp_b下面就可以取到cookie。

2)輸入url訪問webapp_b的時候,必須輸入域名才能解析。比如說在A機器輸入:http://lc-bsp.jszx.com:8080/webapp_b,可以獲取webapp_a在客戶端設置的cookie,而B機器訪問本機的應用,輸入:http://localhost:8080/webapp_b則不可以獲得cookie。

3)設置了cookie.setDomain(".jszx.com");,還可以在默認的home.langchao.com下面共享

以上這篇老生常談java中cookie的使用就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java與Kotlin互調(diào)原理講解

    Java與Kotlin互調(diào)原理講解

    這篇文章主要介紹了Java與Kotlin互調(diào)原理,分享內(nèi)容有Kt調(diào)用-Java參數(shù)非null的處理、Java中使用kt關(guān)鍵字聲明的變量和方法、Kt調(diào)用Java-SAM轉(zhuǎn)換等內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • SpringBoot實現(xiàn)單元測試示例詳解

    SpringBoot實現(xiàn)單元測試示例詳解

    單元測試(unit testing),是指對軟件中的最小可測試單元進行檢查和驗證。這篇文章主要為大家介紹了C語言實現(xiàn)單元測試的方法,需要的可以參考一下
    2022-11-11
  • Springboot通過配置WebMvcConfig處理Cors非同源訪問跨域問題

    Springboot通過配置WebMvcConfig處理Cors非同源訪問跨域問題

    這篇文章主要介紹了Springboot通過配置WebMvcConfig處理Cors非同源訪問跨域問題,關(guān)于Cors跨域的問題,前端有代理和jsonp的常用方式解決這種非同源的訪問拒絕策略
    2023-04-04
  • 如何解決Spring的UnsatisfiedDependencyException異常問題

    如何解決Spring的UnsatisfiedDependencyException異常問題

    這篇文章主要介紹了如何解決Spring的UnsatisfiedDependencyException異常問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • IDE Eval Reset忘了重置進不去的完美解決方法

    IDE Eval Reset忘了重置進不去的完美解決方法

    這篇文章主要介紹了IDE Eval Reset忘了重置進不去的完美解決方法,插件安裝方式包括離線安裝和在線安裝方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • 關(guān)于CommandLineRunner的使用詳解

    關(guān)于CommandLineRunner的使用詳解

    本文介紹了如何在SpringBoot項目啟動時使用CommandLineRunner和ApplicationRunner接口進行數(shù)據(jù)預加載或操作,通過實現(xiàn)這兩個接口,可以在項目啟動時執(zhí)行特定的任務,同時,還展示了如何使用@Order注解來控制多個實現(xiàn)類的加載順序
    2024-12-12
  • java偽泛型知識點詳解

    java偽泛型知識點詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于java偽泛型知識點詳解內(nèi)容,有需要的朋友們可以跟著學習參考下。
    2021-06-06
  • Java多線程ForkJoinPool實例詳解

    Java多線程ForkJoinPool實例詳解

    這篇文章主要介紹了Java多線程ForkJoinPool實例詳解,涉及forkjoin框架的相關(guān)內(nèi)容,需要的朋友可以參考下。
    2017-09-09
  • eclipse springboot工程打war包方法及再Tomcat中運行的方法

    eclipse springboot工程打war包方法及再Tomcat中運行的方法

    這篇文章主要介紹了eclipse springboot工程打war包方法及再Tomcat中運行的方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • springBoot Maven 剔除無用的jar引用問題記錄

    springBoot Maven 剔除無用的jar引用問題記錄

    這篇文章主要介紹了springBoot Maven 剔除無用的jar引用問題記錄,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-12-12

最新評論

绥阳县| 吉水县| 太仆寺旗| 儋州市| 菏泽市| 安平县| 信宜市| 晋宁县| 永泰县| 资阳市| 临西县| 连城县| 和政县| 游戏| 祥云县| 邮箱| 西宁市| 阳西县| 武义县| 松桃| 新邵县| 诏安县| 北安市| 兴海县| 九江县| 江津市| 施甸县| 鱼台县| 科尔| 维西| 尖扎县| 云南省| 深水埗区| 舒兰市| 石河子市| 大安市| 营山县| 施秉县| 靖西县| 五常市| 遂溪县|