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

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

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

    明天的明天的明天

    用鍵盤改變生活

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      17 Posts :: 0 Stories :: 19 Comments :: 0 Trackbacks
    這個問題今天也搞得我很郁悶,寫入cookie時因為我寫入時是在下級路徑寫入的,讀取是要在上級路徑讀取,可是來來回回就是不行,死活在上級路徑讀取不了,在網上搜了很多文章,最后終于解決了,最后轉前輩寫的一篇關于cookie的文章。
    /************************************************************/
    一、設置  
      Cookie是通過HttpServletResponse的addCookie方法加入到Set-Cookie應答頭中的  
      例如:  
              Cookie   userCookie   =   new   Cookie("user",   "admin");    
              response.addCookie(userCookie);  
      和設置有關系的還有以下兩個重要方法  
      1.setMaxAge  
      設置Cookie過期之前的時間,以秒計。如果不設置該值,則Cookie只在當前會話內有效,而且這些Cookie不會保存到磁盤上。  
      注意:刪除cookie就是通過該方法實現的。將要刪除的cookie的過期之前的時間指定為0就可以達到刪除該cookie的目的。  
      2.setPath  
      設置Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁面(JSP頁面或者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和getcookie.jsp、在web2下有getcookie.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文件,你會發現奇怪的現象,web1下的getcookie.jsp中user為空而web2下的getcookie.jsp中user卻有值,這就實現了從一個web應用下設置的cookie在另一個web應用下獲得。  
      大多數人刪除cookie不成功都是因為目錄原因。一個典型的原因是在某一個目錄中設置了cookie(沒有調用setPath方法)卻在另一個目錄中刪除該cookie(其實是調用setMaxAge方法)  
       
      二、讀取  
      從客戶端讀取Cookie時調用的是HttpServletRequest的getCookies方法。該方法返回一個與HTTP請求頭中的內容對應的Cookie對象數組。得到這個數組之后,一般是用循環訪問其中的各個元素,調用getName檢查各個Cookie的名字,直至找到目標Cookie。然后對這個目標Cookie調用getValue,根據獲得的結果進行其他處理。  
      注意:若JSP和Servlet所在目錄(Servlet為其映射目錄)的父目錄中有同名cookie,則request.getCookie()方法得到的Cookie數組中保存的是其父目錄中的cookie的信息;一、設置  
      Cookie是通過HttpServletResponse的addCookie方法加入到Set-Cookie應答頭中的  
      例如:  
              Cookie   userCookie   =   new   Cookie("user",   "admin");    
              response.addCookie(userCookie);  
      和設置有關系的還有以下兩個重要方法  
      1.setMaxAge  
      設置Cookie過期之前的時間,以秒計。如果不設置該值,則Cookie只在當前會話內有效,而且這些Cookie不會保存到磁盤上。  
      注意:刪除cookie就是通過該方法實現的。將要刪除的cookie的過期之前的時間指定為0就可以達到刪除該cookie的目的。  
      2.setPath  
      設置Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁面(JSP頁面或者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和getcookie.jsp、在web2下有getcookie.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文件,你會發現奇怪的現象,web1下的getcookie.jsp中user為空而web2下的getcookie.jsp中user卻有值,這就實現了從一個web應用下設置的cookie在另一個web應用下獲得。  
      大多數人刪除cookie不成功都是因為目錄原因。一個典型的原因是在某一個目錄中設置了cookie(沒有調用setPath方法)卻在另一個目錄中刪除該cookie(其實是調用setMaxAge方法)  
       
      二、讀取  
      從客戶端讀取Cookie時調用的是HttpServletRequest的getCookies方法。該方法返回一個與HTTP請求頭中的內容對應的Cookie對象數組。得到這個數組之后,一般是用循環訪問其中的各個元素,調用getName檢查各個Cookie的名字,直至找到目標Cookie。然后對這個目標Cookie調用getValue,根據獲得的結果進行其他處理。  
      注意:若JSP和Servlet所在目錄(Servlet為其映射目錄)的父目錄中有同名cookie,則request.getCookie()方法得到的Cookie數組中保存的是其父目錄中的cookie的信息;
    posted on 2007-09-17 12:37 Endless 閱讀(1427) 評論(1)  編輯  收藏

    Feedback

    # re: 關于jsp cookie的上級路徑問題 2011-01-20 23:00 wq
    主樓的,你是如何搞定的?  回復  更多評論
      


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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 日本亚洲色大成网站www久久 | 亚洲美女色在线欧洲美女| 美女裸免费观看网站| 香蕉高清免费永久在线视频| 91嫩草亚洲精品| 男人的好看免费观看在线视频| 亚洲一区二区三区不卡在线播放| 国产99视频精品免费观看7| 亚洲国产片在线观看| 国产h视频在线观看免费| 99999久久久久久亚洲| 免费人成视频在线| 亚洲午夜精品久久久久久app| 国产精品久久久久免费a∨| 亚洲AV无码无限在线观看不卡| 免费黄色大片网站| 色网站在线免费观看| 亚洲中文字幕无码一区二区三区 | 亚洲国产一区二区三区在线观看| 99久久综合国产精品免费| 亚洲国产精品ⅴa在线观看| 可以免费观看的一级毛片| 韩国免费A级毛片久久| 亚洲图片在线观看| 最新中文字幕免费视频| 国产精品亚洲一区二区三区| 中文字幕日韩亚洲| 四虎成人精品永久免费AV| 亚洲一区免费视频| 免费jjzz在在线播放国产| 免费无码又爽又刺激网站直播 | 黄页网站在线观看免费| 亚洲日韩精品无码专区网址| 51视频精品全部免费最新| 亚洲风情亚Aⅴ在线发布| 亚洲区小说区图片区| 久久精品毛片免费观看| 亚洲成a∨人片在无码2023 | 国产成人精品免费大全| 亚洲噜噜噜噜噜影院在线播放 | 青青草国产免费久久久91|