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,如需转载请自行联系原作者

cookie的简单学习相关推荐

  1. SQL Server中的锁的简单学习

    原文:SQL Server中的锁的简单学习 简介 在SQL Server中,每一个查询都会找到最短路径实现自己的目标.如果数据库只接受一个连接一次只执行一个查询.那么查询当然是要多快好省的完成工作.但 ...

  2. [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …...

    [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Python学习] ...

  3. php 批量删除cookie,php批量删除cookie的简单实现方法

    php批量删除cookie的简单实现方法 本文实例讲述了php批量删除cookie的简单实现方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: //删除单个cookie:键值设置为空 ...

  4. JavaScript学习笔记04【高级——DOM和事件的简单学习、BOM对象】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  5. 表盘时针的html代码,html5画布操作的简单学习-简单时钟

    html5画布操作的简单学习-简单时针 效果图 一.什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. ...

  6. QuickSkin简单学习--控制结构

    QuickSkin简单学习 3.控制结构 if if ... endif 结构帮助模板的条件选择. QuickSkin支持和PHP相同的操作符. 比较操作符, 作为名称暗示,允许你比较两个值. 可以是 ...

  7. PL/SQL编程的简单学习

    PL/SQL简单学习 1.PL/SQL块的组成部分: ① 声明部分:该部分包含了变量和常量的定义,以及变量和常量的初始值定义,这部分由关键字declare开始,如果PL/SQL块中不需要声明变量或常量 ...

  8. php get 传循环出来的参数_简单学习PHP中的反射

    和Java一样PHP中也提供了一套完整的反射API,何为反射?以前我们是先写类,再在类中添加各种方法和属性,最后实例化一个类对象调用属性和方法.那有我们没有办法只通过这个实例对象获取到关于这个类的全部 ...

  9. day006bootstrap的简单学习 + 轮播图

    任务1:bootstrap的简单学习 <!DOCTYPE html> <html lang="zh-CN"> <head><meta ch ...

最新文章

  1. Kafka配置SASL/PLAIN认证
  2. 吐血总结|史上最全的MySQL学习资料!!
  3. np实现sigmoid_使用numpy实现一个深度学习框架
  4. 1.8 为什么是人的表现-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  5. LeetCode 406 Queue Reconstruction by Height
  6. RxJava系列6(从微观角度解读RxJava源码)
  7. python中如何删除字典中的元素_python中字典删除元素
  8. oracle除了什么之外,Oracle翻译
  9. php如何在sql语句中使用,php – 如何在SQL查询中使用数组
  10. 【水果识别】基于matlab GUI苹果质量检测及分级系统(带面板)【含Matlab源码 1613期】
  11. STM32F103对SD卡数的读写
  12. LabVIEW编程LabVIEW控制Keithley 2400例程与相关资料
  13. 获取图片地址并下载图片
  14. Java远程屏幕监控案例
  15. IT基础架构规划方案三(IT基础软件和系统规划)
  16. MySQL修改自增字段的自增值
  17. 6.又双叒叕背包模拟
  18. Python实现自动抠图(下篇)
  19. 【案例 5-1】 模拟订单号生成
  20. Typora 调整插入图片大小

热门文章

  1. Webfrom --图片验证码
  2. [导入]伍迷创意随想集 之 聚众广告创精品
  3. GenericFactoryMethod泛型工厂模式实现简单IOC功能
  4. 深入理解模板模式及实际应用
  5. 【Python】 Web开发框架的基本概念与开发的准备工作
  6. iOS开发之UIWindow
  7. nginx学习七 高级数据结构之动态数组ngx_array_t
  8. Https 客户端与服务器交互过程梳理(转)
  9. 【Android】自定义view-拖动小球移动
  10. Android 角色时间戳