Thinking

          快樂編程,開心生活
          posts - 21, comments - 27, trackbacks - 0, articles - -5
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Cookie[轉(zhuǎn)]

          Posted on 2007-02-27 08:57 lixw 閱讀(185) 評論(0)  編輯  收藏

          1、在Javascript中操作Cookie:
          ?1?<script>
          ?2?//設(shè)置Cookie
          ?3???function?setCookie(va){
          ?4????????var?expires?=?new?Date();
          ?5???????expires.setTime(expires.getTime()?+?12?*?30?*?24?*?60?*?60?*?1000);
          ?6???????/*???一年?x?一個月當作?30?天?x?一天?24?小時
          ?7???????x?一小時?60?分?x?一分?60?秒?x?一秒?1000?毫秒?*/
          ?8????????document.cookie=va+';expires='+expires.toGMTString();
          ?9???}
          10???//讀取Cookie
          11???function?readCookie(name){
          12???var?cookieValue?=?"";
          13???var?search?=?name?+?"=";
          14???if(document.cookie.length?>?0)??{
          15?????offset?=?document.cookie.indexOf(search);
          16?????if?(offset?!=?-1)????{
          17???????offset?+=?search.length;
          18???????end?=?document.cookie.indexOf(";",?offset);
          19???????if?(end?==?-1)?end?=?document.cookie.length;
          20???????cookieValue?=?unescape(document.cookie.substring(offset,?end))
          21?????}
          22???}
          23???return?cookieValue;
          24?}
          25?
          26?setCookie("user=123");
          27?alert(readCookie('user'));
          28?</script>
          2、在Servlet中操作Cookie:
          ?? a.要把Cookie發(fā)送到客戶端,Servlet先要調(diào)用new?Cookie(name,value)用合適的名字和值創(chuàng)建一個或多個Cookie,通過cookie.setXXX設(shè)置各種屬性,通過response.addCookie(cookie)把cookie加入 應(yīng)答頭。
          ?? b.要從客戶端讀入Cookie,Servlet應(yīng)該調(diào)用request.getCookies (),getCookies()方法返回一個Cookie對象的數(shù)組。在大多數(shù)情況下,你只需要用循環(huán)訪問該數(shù)組的各個元素尋找指定名字的Cookie, 然后對該Cookie調(diào)用getValue方法取得與指定名字關(guān)聯(lián)的值。?
          ?? c.創(chuàng)建Cookie?
          ?? 調(diào)用Cookie對象的構(gòu)造函數(shù)可以創(chuàng)建Cookie。Cookie對象的構(gòu)造函數(shù)有兩個字符串參數(shù):Cookie名字和Cookie值。名字和值都不能包含空白字符以及下列字符:?
          ???[?]?(?)?=?,?"?/???@?:?;? ?
          ?? d.讀取和設(shè)置Cookie屬性?
          ?? 把Cookie加入待發(fā)送的應(yīng)答頭之前,你可以查看或設(shè)置Cookie的各種屬性。下面摘要介紹這些方法:?
          ?? getComment/setComment?
          ?? 獲取/設(shè)置Cookie的注釋。?
          ?? getDomain/setDomain?
          ?? 獲取/設(shè)置Cookie適用的域。一般地,Cookie只返回給與發(fā)送它的服務(wù)器名字完全相同的服務(wù)器。使用這里的方法可以指示瀏覽器把Cookie返回 給同一域內(nèi)的其他服務(wù)器。注意域必須以點開始(例如.sitename.com),非國家類的域(如.com,.edu,.gov)必須包含兩個點,國家 類的域(如.com.cn,.edu.uk)必須包含三個點。?
          ?? getMaxAge/setMaxAge?
          ?? 獲取/設(shè)置Cookie過期之前的時間,以秒計。如果不設(shè)置該值,則Cookie只在當前會話內(nèi)有效,即在用戶關(guān)閉瀏覽器之前有效,而且這些Cookie不會保存到磁盤上。參見下面有關(guān)LongLivedCookie的說明。?
          ?? getName/setName?
          ?? 獲取/設(shè)置Cookie的名字。本質(zhì)上,名字和值是我們始終關(guān)心的兩個部分。由于HttpServletRequest的getCookies方法返回的 是一個Cookie對象的數(shù)組,因此通常要用循環(huán)來訪問這個數(shù)組查找特定名字,然后用getValue檢查它的值。?
          ?? getPath/setPath?
          ?? 獲取/設(shè)置Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁面所在目錄及其子目錄下的所有頁面。這里的方法可以用來設(shè)定一些更一般的 條件。例如,someCookie.setPath("/"),此時服務(wù)器上的所有頁面都可以接收到該Cookie。?
          ?? getSecure/setSecure?
          ?? 獲取/設(shè)置一個boolean值,該值表示是否Cookie只能通過加密的連接(即SSL)發(fā)送。?
          ?? getValue/setValue?
          ?? 獲取/設(shè)置Cookie的值。如前所述,名字和值實際上是我們始終關(guān)心的兩個方面。不過也有一些例外情況,比如把名字作為邏輯標記(也就是說,如果名字存在,則表示true)。?
          ?? getVersion/setVersion?
          ?? 獲取/設(shè)置Cookie所遵從的協(xié)議版本。默認版本0(遵從原先的Netscape規(guī)范);版本1遵從RFC?2109?,?但尚未得到廣泛的支持。?
          ?? e.在應(yīng)答頭中設(shè)置Cookie?
          ?? Cookie可以通過HttpServletResponse的addCookie方法加入到Set-Cookie應(yīng)答頭。下面是一個例子:?
          1????Cookie?userCookie?=?new?Cookie("user",?"uid1234");?
          2????response.addCookie(userCookie);?

          ?? f.讀取保存到客戶端的Cookie?
          ?? 要把Cookie發(fā)送到客戶端,先要創(chuàng)建Cookie,然后用addCookie發(fā)送一個Set-Cookie?HTTP應(yīng)答頭。這些內(nèi)容已經(jīng)在上 面的2.1節(jié)介紹。從客戶端讀取Cookie時調(diào)用的是HttpServletRequest的getCookies方法。該方法返回一個與HTTP請求 頭中的內(nèi)容對應(yīng)的Cookie對象數(shù)組。得到這個數(shù)組之后,一般是用循環(huán)訪問其中的各個元素,調(diào)用getName檢查各個Cookie的名字,直至找到目 標Cookie。然后對這個目標Cookie調(diào)用getValue,根據(jù)獲得的結(jié)果進行其他處理。?
          ?? 上述處理過程經(jīng)常會 遇到,為方便計下面我們提供一個getCookieValue方法。只要給出Cookie對象數(shù)組、Cookie名字和默認值, getCookieValue方法就會返回匹配指定名字的Cookie值,如果找不到指定Cookie,則返回默認值。?

          ?? 獲取指定名字的Cookie值?
          1?public?static?String?getCookieValue(Cookie[]?cookies,?
          2????????String?cookieName,String?defaultValue)?{?
          3????????for(int?i=0;?i<cookies.length;?i++)?{?
          4????????????Cookie?cookie?=?cookies[i];?
          5????????????if?(cookieName.equals(cookie.getName()))?{
          6????????????????return(cookie.getValue());?
          7????????????}?
          8????????return(defaultValue);?
          9????}?



          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 丰镇市| 靖安县| 蕉岭县| 巧家县| 宜兰市| 邻水| 启东市| 阳谷县| 罗平县| 博兴县| 通渭县| 柘荣县| 九龙坡区| 哈尔滨市| 罗平县| 黑水县| 宜兰县| 固原市| 新乐市| 正阳县| 新平| 神木县| 许昌县| 嘉鱼县| 雷州市| 南江县| 邵阳县| 武义县| 东阳市| 循化| 荔波县| 绥棱县| 同德县| 虞城县| 海安县| 来凤县| 广平县| 福建省| 河源市| 柞水县| 昌都县|