天天看點

cookie的簡單學習您也可以下載下傳一些例子,下載下傳名稱:cookie_han

Cookie的使用

一、cookie的作用

在我們平常寫的B/S程式中,會經常用到cookie,主要有以下一些作用:

1、 記錄使用者名和密碼

以及該使用者需要儲存的一些資訊,如購物購站,使用cookie,可以讓使用者自動登入到站點等。

2、 定制站點

可以使用cookie來記錄使用者的偏好。

3、 定向廣告

可以使用cookie來記錄用記經常通路的主題,并向他們顯示與這些主題相關的廣告。

二、向客戶程式發送cookie

1、 建立cookie對象

Cookie c = new Cookie(“userId”,”landril”);

2、 設定最大時效,預設該cookie是存儲在浏覽器的内在中,使用者關閉浏覽器則被删除,下面的方法是将cookie存儲在硬碟上。

c.setMaxAge(60*60*24);//一天,如果設定為0則是删除該cookie

3、 将cookie放入到HTTP響應報頭,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定的Set-Cookie報頭,而是建立新的報頭。

response.addCookie(c);

      注意:設定cookie的步驟為建立cookie對象,設定最大時效,将cookie放入響應報頭,即發送到客戶程式,記住一定要将cookie發送到客戶程式

三、從用戶端讀取cookie

1、 調用HttpServletRequest的getCookies得到一個Cookie對象的數組

2、 對數組進行循環,調用cookie的getName方法,擷取具體的cookie的值

Cookie[] cookies = request.getCookies();

if(cookies != null){

for(int i=0;i<cookies.length;i++){

       Cookie c = cookies[i];

       if(“userId”.equals(c.getName())){

       System.out.println(c.getValue());

}

四、cookie的常用方法

1、 setComment()/getComment():指定或查找與該cookie相關的注釋

2、 setDomain()/getDomain():設定或讀取該cookie适用的域

3、 setMaxAge()/getMaxAge():操作cookie保留的時間,多長時間後過期

4、 getName():讀取cookie的名稱

5、 setPath()/getPath():設定或取得cookie适用的路徑

cookie.setPath(“/”);指定伺服器的所有頁面都應該收到該cookie

6、 setSource()/getSource():指定cookie是否隻能通過加密連接配接(SSL)

預設false,表示cookie适用所有連接配接

7、 setValue()/getValue():指定或擷取cookie的值

五、使用cookie

1、RepeatServlet.java

publicclass RepeatServlet extends HttpServlet {

publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

boolean newa = true;

       Cookie[] cookies = request.getCookies();

if(cookies != null){

for (int i = 0; i < cookies.length; i++) {

              Cookie c = cookies[i];

if ((c.getName().equals("repeat")) && (c.getValue().equals("true"))) {

                 newa = false;

break;

              }

          }

      }

       String title;

if (newa) {

          Cookie rtn = new Cookie("repeat"," true");

          rtn.setMaxAge(60*60*24*365);

          response.addCookie(rtn);

          title = "First Welcome";

      } else {

          title = "Welcom Back";

       response.setContentType("text/html");

       PrintWriter out = response.getWriter();

       out.println("<html><body><h3>");

       out.println(title);

       out.println("</h3></body></html>");

   }

publicvoid doPose(HttpServletRequest request, HttpServletResponse response)

       doGet(request,response);

2、CookieUtil.java

publicclass CookieUtil{

publicstatic String getValue(HttpServletRequest request,String cName,String value){

              Cookie cookie = cookies[i];

if (cName.equals(cookie.getName())) {

return cookie.getValue();

return value;

publicstatic Cookie getCookie(HttpServletRequest request,String cName){

return cookie;

returnnull;

=============================================2013-06-17-han-add

裡面包括java操作cookie的工具類,設定cookie,删除cookie,以及得到cookie的值,你可以參考下,如果需要例子,您可以去下載下傳,在tomcat中部署一下就可以用了!謝謝

package com.hanchao.util;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* cookie工具類

* @author hanchao

* 2013-04-23

*/

public class CookieUtil {

/*******************

* 傳回使用者通路的次數

* hanchao

* *****************

* @param request

* @param cName

* @param value

* @return

public static String getValue(HttpServletRequest request,String cName,String value) {

if(cookies != null) {

for(int i = 0; i < cookies.length; i++) {

Cookie cookie = cookies[i];

if(cName.equals(cookie.getName())) {

return cookie.getValue();

return value;

/**************************

* get Cookie By cookieName

* ***********************

public static Cookie getCookie(HttpServletRequest request,String cName) {

if(cookie != null && cName.equals(cookie.getName())) {

return cookie;

return null;

* 添加cookie

* @param response

* @param namecookie的key值

* @param valuecookie的value值

* @param pathcookie的路徑

* @param domaincookie的域

* @param timeoutcookie的過期時間

* 2013-6-18

* @author: 韓超

public static void addCookie(HttpServletResponse response,String name,String value,String path,String domain,int timeout) {

Cookie cookie = new Cookie(name, value);

if(domain == null) {

domain = ".baidu.com";//Constant.PASSPORTDOMAIN;

if(path == null) {

path = "/";

cookie.setDomain(domain);

cookie.setPath(path);

cookie.setMaxAge(timeout);

response.addCookie(cookie);

* 删除cookie

* @param namecookie的名稱

* @author: 韓立偉

public static void delCookie(HttpServletRequest request,HttpServletResponse response,String name) {

for(Cookie cookie : cookies) {

if(cookies != null && (name).equals(cookie.getName())) {

addCookie(response,name,null,null,null,0);

return;

* 修改cookie的value值

* @param name

public static void updateCookie(HttpServletRequest request,HttpServletResponse response,String name,String value) {

if(cookies != null && (name).equals(c

ookie.getName())) {

addCookie(response,name,value,cookie.getPath(),cookie.getDomain(),cookie.getMaxAge());

     本文轉自韓立偉 51CTO部落格,原文連結:http://blog.51cto.com/hanchaohan/1185507,如需轉載請自行聯系原作者