<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數(shù)據(jù)加載中……

    關(guān)于cookie的小總結(jié)

    前兩天看見有兄弟問cookie為什么刪除不了,所以寫了給小總結(jié),希望對用cookie的各位兄弟有幫助
    對于cookie,最主要的當然是讀取和設(shè)置了,下面分兩方面說明.
    一、設(shè)置
    Cookie是通過HttpServletResponse的addCookie方法加入到Set-Cookie應(yīng)答頭中的
    例如:
    Cookie userCookie = new Cookie("user", "admin");
    response.addCookie(userCookie);
    和設(shè)置有關(guān)系的還有以下兩個重要方法
    1.setMaxAge
    設(shè)置Cookie過期之前的時間,以秒計。如果不設(shè)置該值,則Cookie只在當前會話內(nèi)有效,而且這些Cookie不會保存到磁盤上。
    注意:刪除cookie就是通過該方法實現(xiàn)的。將要刪除的cookie的過期之前的時間指定為0就可以達到刪除該cookie的目的。
    2.setPath
    設(shè)置Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁面(JSP頁面或者Servlet的映射)所在目錄及其子目錄下的所有頁面。
    注意:
    A:所有的cookie都是有路徑的
    B:該方法設(shè)置的路徑為客戶端路徑,即“/”代表服務(wù)器根目錄,而不是WEB應(yīng)用根目錄
    C:該方法設(shè)置路徑時,“/myWeb/”與“/myWeb”是不同的,要特別注意;前者可以關(guān)聯(lián)到服務(wù)器的myWeb目錄下,而或者則不可以。
    D:該方法設(shè)置路徑時,沒有相對目錄可言,即不論在哪個目錄下設(shè)置setPath(“/myWeb/”),該cookie都將關(guān)聯(lián)到服務(wù)器的myWeb目錄下(setPath(“/myWeb”)則不可以),而不是當前目錄的myWeb的子目錄下;同樣,設(shè)置setPath(“myWeb/”)和setPath(“myWeb”)也不能關(guān)聯(lián)到當前目錄的myWeb的子目錄下
    這里有個奇怪的例子,就是在一個web應(yīng)用下設(shè)置的cookie可以在另一個web應(yīng)用下獲得(兩個web應(yīng)用在同一個服務(wù)器下)
    目錄結(jié)構(gòu):在服務(wù)器根目錄上有web1和web2兩個目錄,在web1下有setcookie.jsp和getcookie.jsp、在web2下有g(shù)etcookie.jsp
    web1下的setcookie.jsp
    <%
    Cookie userCookie = new Cookie("user", "admin");
    userCookie.setMaxAge(24*60*60);
    userCookie.setPath("/web2/");
    response.addCookie(userCookie);
    %>
    web1下的getcookie.jsp
    <%
    Cookie[] cookie = request.getCookies();
    String user = new String();
    if ( cookie != null ) {
    for (int i = 0; i < cookie.length; i++) {
    Cookie myCookie = cookie[i];
    if (myCookie.getName().equals("user")) {
    user = myCookie.getValue();
    }
    }
    }
    out.println("user = " + user);
    %>
    web2下的getcookie.jsp
    <%
    Cookie[] cookie = request.getCookies();
    String user = new String();
    if ( cookie != null ) {
    for (int i = 0; i < cookie.length; i++) {
    Cookie myCookie = cookie[i];
    if (myCookie.getName().equals("user")) {
    user = myCookie.getValue();
    }
    }
    }
    out.println("user = " + user);
    %>
    先訪問web1下的setcookie.jsp,然后分別訪問web1和web2下面的getcookie.jsp文件,你會發(fā)現(xiàn)奇怪的現(xiàn)象,web1下的getcookie.jsp中user為空而web2下的getcookie.jsp中user卻有值,這就實現(xiàn)了從一個web應(yīng)用下設(shè)置的cookie在另一個web應(yīng)用下獲得。
    大多數(shù)人刪除cookie不成功都是因為目錄原因。一個典型的原因是在某一個目錄中設(shè)置了cookie(沒有調(diào)用setPath方法)卻在另一個目錄中刪除該cookie(其實是調(diào)用setMaxAge方法)

    二、讀取
    從客戶端讀取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é)果進行其他處理。
    注意:若JSP和Servlet所在目錄(Servlet為其映射目錄)的父目錄中有同名cookie,則request.getCookie()方法得到的Cookie數(shù)組中保存的是其父目錄中的cookie的信息;

    from: http://www.cndiy8.com/data/web5409/20050311/20050311__3812885.html

    posted on 2006-12-05 19:38 weidagang2046 閱讀(458) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 精品一区二区三区高清免费观看| 亚洲人成色7777在线观看不卡| 中文字幕高清免费不卡视频| 亚洲91精品麻豆国产系列在线| 亚洲线精品一区二区三区| 香蕉高清免费永久在线视频| 久久精品毛片免费观看| 中文日本免费高清| 美女视频黄视大全视频免费的| 亚洲一级视频在线观看| 亚洲AV永久无码精品成人| 亚洲欧洲中文日韩av乱码| 午夜高清免费在线观看| 4444www免费看| 久久午夜无码免费| 久久久久女教师免费一区| 国产成人va亚洲电影| 日韩亚洲人成在线| 亚洲小视频在线播放| 色婷婷亚洲十月十月色天| 亚洲精品乱码久久久久久蜜桃不卡 | 国产成人免费a在线视频app| 无遮挡呻吟娇喘视频免费播放| 国产亚洲精品成人AA片| 亚洲日本国产乱码va在线观看| 亚洲av片劲爆在线观看| 国产gv天堂亚洲国产gv刚刚碰| 亚洲精品无码日韩国产不卡?V| 又大又粗又爽a级毛片免费看| 成人国产mv免费视频| 免费看大黄高清网站视频在线| 毛片免费观看网址| 好大好硬好爽免费视频| 女人18毛片a级毛片免费| 久久电影网午夜鲁丝片免费| 久久不见久久见免费影院| 免费不卡视频一卡二卡| 无码日韩人妻av一区免费| 免费99精品国产自在现线| 免费av欧美国产在钱| 啦啦啦在线免费视频|