熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

java中cookie操作詳細

2013-11-15 12:14:28  來源: JSP教程 

  設置Cookie

  代碼如下 
Cookie cookie = new Cookie("key" "value");

  cookiesetMaxAge();
 

  設置秒生存期如果設置為負值的話則為浏覽器進程Cookie(內存中保存)關閉浏覽器就失效

  代碼如下

  cookiesetPath("/test/test");
 

  設置Cookie路徑不設置的話為當前路徑(對於Servlet來說為requestgetContextPath() + webxml裡配置的該Servlet的urlpattern路徑部分)

  代碼如下 
responseaddCookie(cookie);
 

  讀取Cookie

  該方法可以讀取當前路徑以及“直接父路徑”的所有Cookie對象如果沒有任何Cookie的話則返回null

  

  代碼如下

  Cookie[] cookies = requestgetCookies(); 

  刪除Cookie

  代碼如下 
Cookie cookie = new Cookie("key" null);

  cookiesetMaxAge();
 

  設置為為立即刪除該Cookie

  代碼如下 
cookiesetPath("/test/test");
 

  刪除指定路徑上的Cookie不設置該路徑默認為刪除當前路徑Cookie

  

  代碼如下 responseaddCookie(cookie); 

  下面用一個完整的實例來說明

  代碼如下 
<%@ page contentType="text/html; charset=utf" language="java" import="javasql*" errorPage="" %>
<!DOCTYPE html PUBLIC "//WC//DTD XHTML Transitional//EN" "
<html xmlns="
<head>
<meta httpequiv="ContentType" content="text/html; charset=utf" />
<title></title>
</head>

  <body>
<%
    String username = null;
    Cookie[] cookies = requestgetCookies();
    if(cookies!=null)
    {
        for(int i=;i<cookieslength;i++)
        {
            if("cookies_user"equals(cookies[i]getName()))
            {
                username = cookies[i]getValue();//cookies_user}
        }
       
        if("onepc"equals(username))
        {
            outprintln("Hello");
        }else
        {
        %>
       
<table width="" border="">
  <form id="form" name="form" method="post" action="cloginjsp">
  <tr>

  <td width=""><div align="center"></div></td>
    <td width=""><input type="text" name="user" id="user" /></td>
  </tr>
  <tr>
    <td><div align="center"></div></td>
    <td><input type="text" name="textfield" id="textfield" /></td>
  </tr>
  <tr>
    <td><div align="center">     
    </div></td>
    <td><select name="select" id="select">
      <option value="">one year</option>
      <option value="">two min</option>
      </select></td>
  </tr>
  <tr>
    <td colspan=""><label>
      <input type="submit" name="button" id="button" value="" />
    </label></td>

  </tr>
      </form>
</table>

  <%
        }
   
    }

  %>

  
</body>
</html>
 

  
loginjsp

  代碼如下

  <%
    String user = requestgetParameter("user");
    Cookie cookie = new Cookie("cookies_user"user);
    cookiesetMaxAge();
    responseaddCookie(cookie);
    responsesendRedirect("cindexjsp");

  %>
 

  
注意假設路徑結構如下

  

  代碼如下 
test/test/test/test/test 

  a相同鍵名的Cookie(值可以相同或不同)可以存在於不同的路徑下

  b 刪除時如果當前路徑下沒有鍵為"key"的Cookie則查詢全部父路徑檢索到就執行刪除操作(每次只能刪除一個與自己最近的父路徑Cookie)   FF必須指定與設定cookie時使用的相同路徑來刪除改cookie而且cookie的鍵名不論大寫小寫或大小混合都要指定路徑IE鍵名小寫時如果當前路徑為/test/test如果找不到再向上查詢/test/test/test如果還找不到就查詢/(/test/test不查詢) 鍵名大小寫混合或大寫時不指定路徑則默認刪除當前路徑並且不向上查詢

  c讀取Cookie時只能讀取直接父路徑的Cookie如果當前路徑為/test/test要讀取的鍵為“key”當前路徑讀取後還要讀取/test/test讀取後還要讀取/

  d在做Java的web項目時由於一般的Web服務器(如Tomcat或Jetty)都用Context來管理不同的Web Application這樣對於每個Context有不同的Path在一個Server中有多個Web Application時要特別小心不要設置Path為/的Cookie容易誤操作(當然前提是域名相同)


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20559.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.