一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

服務(wù)器之家 - 編程語言 - JAVA教程 - 老生常談java中cookie的使用

老生常談java中cookie的使用

2020-07-11 15:17java教程網(wǎng) JAVA教程

下面小編就為大家?guī)硪黄仙U刯ava中cookie的使用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1 什么是cookie

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

2 cookie的四個屬性

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

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

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

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

3 java Cookie操作

創(chuàng)建Cookie

?
1
2
3
4
5
6
7
8
9
10
// new一個Cookie對象,鍵值對為參數(shù)
Cookie cookie = new Cookie("key", "cookie的value值");
   如果cookie的值中含有中文時,需要對cookie進(jìn)行編碼,不然會產(chǎn)生亂碼,使用
      URLEncoder.encode("cookie的value值","utf-8");
 
 
// 設(shè)置Cookie最大生存時間,以秒為單位,負(fù)數(shù)的話為瀏覽器進(jìn)程,關(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對象

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

刪除cookie

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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) {
      // 設(shè)置生存期為0
      cookie.setMaxAge(0);
      // 設(shè)回Response中生效
      response.addCookie(cookie);
    }
  }
}

4 cookie的setPath方法使用:

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

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

本機tomcat/webapp下面有兩個應(yīng)用:webapp_a和webapp_b,

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

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

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

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

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

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

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

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

5 cookie.setDomain方法設(shè)計跨域共享

A機所在的域:home.langchao.com,A有應(yīng)用webapp_a

B機所在的域:jszx.com,B有應(yīng)用webapp_b

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

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲激情自拍偷拍 | 午夜精品久久久久久中宇 | 色老板视频 | 欧美最新在线 | 欧美穿高跟鞋做爰 | tkvk视频| 国产伦码精品一区二区三区 | 亚洲欧美久久久久久久久久爽网站 | 国产自一区 | 国产亚洲精品第一综合另类 | 男人机机桶女人机机 | 成年男女免费视频 | 国产90后美女露脸在线观看 | 成人伊在线影院 | 楚乔传第二部免费播放电视连续剧 | 91国语自产拍在线观看 | 末代皇帝无删减版在线观看 | 成人免费视频一区二区 | 欧美大美bbb和大白屁股 | 日本漫画工囗全彩内番e绅 日本伦理动漫在线观看 | 99精品国产高清一区二区三区香蕉 | 青青成人福利国产在线视频 | 精品国产91久久久久 | 日本人泡妞18xxⅹ | 日韩在线a视频免费播放 | 国产 日韩 欧美视频二区 | 亚洲六月丁香六月婷婷蜜芽 | 国内精品久久久久久中文字幕 | 97午夜 | www.俺去啦 | 国产99热99 | 驯服有夫之妇HD中字日本 | 成人永久免费 | 婷婷中文网 | 亚洲国产精品久久精品怡红院 | 茄子视频懂你更多apl | 99久久一香蕉国产线看观看 | 明星乱亚洲 | 王小军怎么了最新消息 | 免费在线观看网址大全 | 亚洲一欧洲中文字幕在线 |