cookie的简单学习

简介:

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)

throws ServletException, IOException {

       doGet(request,response);

   }

}


2、CookieUtil.java

publicclass CookieUtil{


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

       Cookie[] cookies = request.getCookies();

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;

   }


publicstatic Cookie getCookie(HttpServletRequest request,String cName){

       Cookie[] cookies = request.getCookies();

if(cookies != null){

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

              Cookie cookie = cookies[i];

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

return cookie;

              }

          }

      }

returnnull;

   }

}

您也可以下载一些例子,下载名称:cookie_han


=============================================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

* 2013-04-23

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

* @param request

* @param cName

* @param value

* @return

*/

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

Cookie[] cookies = request.getCookies();

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

* hanchao

* 2013-04-23

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

* @param request

* @param cName

* @return

*/

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

Cookie[] cookies = request.getCookies();

if(cookies != null) {

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

Cookie cookie = cookies[i];

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 request

* @param response

* @param namecookie的名称

* 2013-6-18

* @author: 韩立伟

*/

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

Cookie[] cookies = request.getCookies();

for(Cookie cookie : cookies) {

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

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

return;

}

}

}

/**

* 修改cookie的value值

* @param request

* @param response

* @param name

* @param value

* 2013-6-18

* @author: 韩超

*/

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

Cookie[] cookies = request.getCookies();

for(Cookie cookie : cookies) {

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


ookie.getName())) {

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

return;

}

}

}

}



     本文转自韩立伟 51CTO博客,原文链接:http://blog.51cto.com/hanchaohan/1185507,如需转载请自行联系原作者




相关文章
|
存储 JSON 安全
Gin 学习之 cookie 读写
Gin 学习之 cookie 读写
71 0
|
3月前
|
存储 JavaScript 前端开发
学习vuex和localstorage . cookie的作用与区别
探讨Vuex、LocalStorage与Cookie:三种关键技术在现代Web开发中的角色。Vuex作为Vue的状态管理工具,提供集中、响应式且可预测的状态变更机制,适用于复杂应用。LocalStorage为客户端提供大容量、持久化的数据存储方案,适合保存用户偏好等静态信息。Cookie则擅长会话跟踪与认证管理,数据虽小却能在客户端与服务器间传递。每种技术针对不同场景各有优势,合理选用是关键。
|
6月前
|
存储 网络协议 测试技术
【如何学习Python自动化测试】—— Cookie 处理
【如何学习Python自动化测试】—— Cookie 处理
|
存储 缓存 负载均衡
我在学习Nginx的时候认识的cookie和session,有什么不同?
我在学习Nginx的时候认识的cookie和session,有什么不同?
129 0
|
存储 安全 前端开发
java学习之浅谈Cookie与Httpsession对象
java学习之浅谈Cookie与Httpsession对象
java学习之浅谈Cookie与Httpsession对象
|
存储 安全 数据安全/隐私保护
Flask学习与项目实战8:cookie与session的介绍与使用
cookie:在最开始的网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。c
Flask学习与项目实战8:cookie与session的介绍与使用
|
数据采集 Web App开发 存储
Python爬虫学习:Cookie 和 Session 的区别是什么?
Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。
191 0
express学习27-项目包含的知识点cookie和session2
express学习27-项目包含的知识点cookie和session2
107 0
express学习27-项目包含的知识点cookie和session2
express学习26-项目包含的知识点cookie和session
express学习26-项目包含的知识点cookie和session
52 0
express学习26-项目包含的知识点cookie和session
|
开发框架
FastAPI 学习之路(十三)Cookie 参数,Header参数
FastAPI 学习之路(十三)Cookie 参数,Header参数
FastAPI 学习之路(十三)Cookie 参数,Header参数