1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        詳細介紹Jsp中的Cookies

        發布時間:  2012/5/28 12:03:04

        在開發網站應用程序的過程中,使用cookie記錄用戶的一些信息是比較常用的一種方法,而cookie的使用也非常簡單。

        一、Cookie是通過HttpServletResponse的addCookie方法加入到Set-Cookie應答頭中的

        例如:

        1. Cookie userCookie = new Cookie("user", "admin");
        2. response.addCookie(userCookie);

        和設置有關系的還有以下兩個重要方法

        1.setMaxAge

        設置Cookie過期之前的時間,以秒計。如果不設置該值,則Cookie只在當前會話內有效,而且這些Cookie不會保存到磁盤上。

        注意:刪除cookie就是通過該方法實現的。將要刪除的cookie的過期之前的時間指定為0就可以達到刪除該cookie的目的。

        2.setPath

        設置Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁面(jsp(SUN企業級應用的首選)頁面或者Servlet的映射)所在目錄及其子目錄下的所有頁面。

        注意:

        A:所有的cookie都是有路徑的

        B:該方法設置的路徑為客戶端路徑,即“/”代表服務器根目錄,而不是WEB應用根目錄

        C:該方法設置路徑時,“/myWeb/”與“/myWeb”是不同的,要特別注意;前者可以關聯到服務器的myWeb目錄下,而后者則不可以。

        D:該方法設置路徑時,沒有相對目錄可言,即不論在哪個目錄下設置setPath(“/myWeb/”),該cookie都將關聯到服務器的myWeb目錄下(setPath(“/myWeb”)則不可以),而不是當前目錄的myWeb的子目錄下;同樣,設置setPath(“myWeb/”)和setPath(“myWeb”)也不能關聯到當前目錄的myWeb的子目錄下。

        這里有個奇怪的例子,就是在一個web應用下設置的cookie可以在另一個web應用下獲得(兩個web應用在同一個服務器下)
        目錄結構:在服務器根目錄上有web1和web2兩個目錄,在web1下有setcookie.jsp(SUN企業級應用的首選)和getcookie.jsp(SUN企業級應用的首選)、在web2下有getcookie.jsp(SUN企業級應用的首選)

        web1下的setcookie.jsp(SUN企業級應用的首選)

        1. <%
        2. Cookie userCookie = new Cookie("user", "admin");
        3. userCookie.setMaxAge(24*60*60);
        4. userCookie.setPath("/web2/");
        5. response.addCookie(userCookie);
        6. %>

        web1下的getcookie.jsp(SUN企業級應用的首選)

        1. <%
        2. Cookie[] cookie = request.getCookies();
        3. String user = new String();
        4. if ( cookie != null ) {
        5. for (int i = 0; i < cookie.length; i++) {
        6. Cookie myCookie = cookie[i];
        7. if (myCookie.getName().equals("user")) {
        8. user = myCookie.getValue();
        9. }
        10. }
        11. }
        12. out.println("user = " + user);
        13. %>
        14. web2下的getcookie.jsp(SUN企業級應用的首選)
        15. <%
        16. Cookie[] cookie = request.getCookies();
        17. String user = new String();
        18. if ( cookie != null ) {
        19. for (int i = 0; i < cookie.length; i++) {
        20. Cookie myCookie = cookie[i];
        21. if (myCookie.getName().equals("user")) {
        22. user = myCookie.getValue();
        23. }
        24. }
        25. }
        26. out.println("user = " + user);
        27. %>

        先訪問web1下的setcookie.jsp(SUN企業級應用的首選),然后分別訪問web1和web2下面的getcookie.jsp(SUN企業級應用的首選)文件,你會發現奇怪的現象,web1下的getcookie.jsp(SUN企業級應用的首選)中user為空而web2下的getcookie.jsp(SUN企業級應用的首選)中user卻有值,這就實現了從一個web應用下設置的cookie在另一個web應用下獲得。

        大多數人刪除cookie不成功都是因為目錄原因。一個典型的原因是在某一個目錄中設置了cookie(沒有調用setPath方法)卻在另一個目錄中刪除該cookie(其實是調用setMaxAge方法)

        3、跨域共享cookie的方法:設置

        1. cookie.setDomain(".jszx.com");

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

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

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

        2)這個參數必須以“.”開始。

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

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

        二、讀取

        從客戶端讀取Cookie時調用的是HttpServletRequest的getCookies方法。該方法返回一個與HTTP請求頭中的內容對應的Cookie對象數組。得到這個數組之后,一般是用循環訪問其中的各個元素,調用getName檢查各個Cookie的名字,直至找到目標Cookie。然后對這個目標Cookie調用getValue,根據獲得的結果進行其他處理。

        注意:若jsp(SUN企業級應用的首選)和Servlet所在目錄(Servlet為其映射目錄)的父目錄中有同名cookie,則request.getCookie()方法得到的Cookie數組中保存的是其父目錄中的cookie的信息;

        三、說明

        我們知道,對于一個頁面中的request和response,是一次http請求產生的,request是http請求中的所有參數,因此包含了發出這次http請求時cookie的值,而response是對于這次http請求webapplication產生的反應,所以它可以寫cookie的值,這樣看來,request得到的cookie的值,和response要寫的cookie的值可以說是完全不同的。

        簡單地說request得到的cookie的值是在這次http請求之前的cookie的值,而response要寫得值是這次http請求之后的cookie的值。所以,在同一個request和response中,如果response中增加了新的cookie,request中并不能得到。


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线