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,如需轉載請自行聯系原作者