u  常用的API

创建Cookie对象

Cookie(String name, String value)    ->以指定数据创建Cookie对象

设置Cookie对象

void setMaxAge(int expiry)                ->设置Cookie的最大有效时间

void setPath(String uri)                             ->设置Cookie的有效路径

void setDomain(String pattern)            ->设置Cookie的有效域

发送Cookie对象

void addCookie(Cookie cookie)           ->发送Cookie对象

获取Cookie对象

Cookie[] getCookies()                         ->获取用户请求中的Cookie数组

获取Cookie中携带信息

int getMaxAge()                                ->获取Cookie的最大有效时间

String getName()                               ->获取Cookie的名字

String getValue()                               ->获取Cookie存储的值

String getDomain()                            ->获取Cookie的有效域

String getPath()                                 ->获取Cookie的有效路径

读和写多个Cookie

如果给客户端输出多个Cookie对象,那么服务器会创建多个

Set-Cookie: name=jack; Expires=Wed, 16-Jan-2013 07:02:01 GMT

Set-Cookie: password=root; Expires=Wed, 16-Jan-2013 07:02:01 GMT头字段进行Cookie的发送。

多个Cookie在浏览器缓存中以一个文件的形式进行存储。

浏览器使用一个Cookie: name=jack; password=root带多个Cookie数据。

Cookie有效路径

以上的代码在第一次写回Cookie后,如果后面继续请求该网站的其他资源,那么还会继续携带Cookie对象直到Cookie过期。但是如果访问不同网站那么不带该Cookie。

cookie2.setPath("/day08/read");

Set-Cookie: password=root; Expires=Wed, 16-Jan-2013 07:25:06 GMT; Path=/day08/read

存储的时候由于两个Cookie的有效路径不同,因此存储在不同的Cookie文件中。

但是指定有效路径的Cookie文件中多了有效路径的值。

password

root

localhost/day08/read

但是如果现在需要在不同的网站中传递Cookie对象,那么如何指定有效路径。

cookie2.setPath("/");   à 指定Cookie的有效路径是tomcat的webapps目录

Cookie的跨域

假定A服务器上发布一个网站叫CMS系统,域名www.sina.com.cn

在CMS系统中可以直接编写一个写Cookie的Servlet。但是要设置该Cookie的有效域。

cookie.setDomain(“.163.com”);

假定B服务器上发布一个网站叫IT系统,域名www.163.com

编写一个获取Cookie数据的Servlet进行Cookie的数据读取。

总结:

  1. 可以实现自动登录。用户名和密码默认是明码的。开发者需要自定义加密。Md5 Base64
  2. 购物车的商品ID信息
  3. 存储用户上次的登录时间

使用Cookie实现显示用户的上次访问时间

 public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
// 页面输出
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
// 获取字符输出流对象
PrintWriter out = response.getWriter();
// 获取Cookie数组对象
Cookie [] cookies = request.getCookies();
// 定义一个时间的字符串变量
String date = null;
// 定义一个变量存储系统当前日期
Date current_date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
// 判断是否是第一次登陆
if(cookies != null){
// 直接循环
for(Cookie cookie : cookies){
// 获取Cookie
if("lasttime".equals(cookie.getName())){
// 获取上次访问的时间
date = cookie.getValue();
break;
}else{
// 获取系统时间
date = format.format(current_date);
}
}
}else{
// 获取系统时间
date = format.format(current_date);
}
// 显示时间
out.println(date);
// 将这次访问的时间写入Cookie
Cookie new_cookie = new Cookie("lasttime",
format.format(new Date()));
new_cookie.setMaxAge(5*60);
new_cookie.setPath("/day08/showtime");
// 发送
response.addCookie(new_cookie);
}

如果cookie没有调用setMaxAge方法,这个cookie没被放在文件里,而是放在客户端浏览器的内存中。

Cookie细节

  1. 一个Cookie只能存储一种信息。
  2. 一个网站可以发送多个Cookie,浏览器可以同时携带多个Cookie。
  3. 同一个网站最多发送20个Cookie,浏览器最多存储300个Cookie,一个Cookie最多存储数据在4K以内。
  4. 如果创建了Cookie对象没有指定最大有效时间那么不会存储在浏览器的缓存中。

Cookie技术的更多相关文章

  1. php中cookie技术关于跨目录调用cookie值的问题

    今天做项目发现了一个奇葩错误,以cookie技术为主,反复测试发现cookie不能跨目录调用. 我在F:wamp\www\test\下面有1.php和2.php其中1.php接受2.php中setco ...

  2. js操纵cookie技术

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  3. Cookie技术详解

    1. Cookie的特性 属性: 1> name: Cookie的名字 2> value: Cookie的值 3> path: 可选,Cookie的存储路径,默认情况下的存储路径时访 ...

  4. cookie技术简介

    Cookie简介 众所周知,HTTP协议是一个无状态的协议.一个Web应用由很多个Web页面组成,每个页面都有唯一的URL来定义.用户在浏览器的地址栏输入页面的URL,浏览器就会向Web Server ...

  5. javaWeb学习总结(6)- 会话之cookie技术

    什么是会话? 在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程就是一个会话. 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为 ...

  6. 会话技术、Cookie技术与Session技术

    一.会话技术  1. 存储客户端状态 会话技术是帮助服务器记住客户端状态(区分客户端)的.  2. 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话.会话技术就是记录这 ...

  7. #WEB安全基础 : HTTP协议 | 0x8 HTTP的Cookie技术

    说道Cookie,你喜欢吃饼干吗? 这里的Cookie不是饼干=_= HTTP不对请求和响应的通信状态进行保存,所以被称为无状态协议,为了保持状态和协议功能引入了Cookie技术 Cookie技术在请 ...

  8. Java第三阶段学习(十三、会话技术、Cookie技术与Session技术)

    一.会话技术  1. 存储客户端状态 会话技术是帮助服务器记住客户端状态(区分客户端)的.  2. 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话.会话技术就是记录这 ...

  9. java基础79 会话管理(Cookie技术、Session技术)

    1.概念     会话管理:管理浏览器和服务器之间会话过程中产生的会话数据.    Cookie技术:会话数据保存到浏览器客户端.[存 编号/标记(id)]    Session技术:会话技术会保存到 ...

  10. 会话管理之Cookie技术

    会话管理是web开发中比较重要的环节,这一节主要总结下会话管理中的cookie技术. 1. 何为会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个 ...

随机推荐

  1. 05-树6. Path in a Heap (25) 小根堆

    05-树6. Path in a Heap (25) Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.patest.cn/contes ...

  2. PHP简单利用 token 防止表单重复提交

    <?php /* * 隐藏一个可变的token,每次提交都需要和服务器校对 */ session_start(); function set_token() { $_SESSION['token ...

  3. MAMP PRO 下安装 memcache

    本人PHP用的是 5.5.10,编译 memcache 模块需要用到 php 源码,mamp 不自带,到 php 官网下一个 php-5.5.11.tar.gz, 解压后,生成 zend_config ...

  4. iOS学习之sqlite的创建数据库,表,插入查看数据

    目录(?)[-] 新建项目sqliteDemo添加使用sqlite的库libsqlite3dylib sqlite 的方法 获取沙盒目录并创建或打开数据库 创建数据表 插入数据 查询数据库并打印数据 ...

  5. LeetCode89:Gray Code

    The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...

  6. The differentiation program with abstract data

    #!r6rs ( import ( rnrs base ( 6 ) )          ( rnrs io simple ( 6 ) ) ) ( define ( deriv exp var )   ...

  7. linux shell 正则表达式(BREs,EREs,PREs)差异比较(转,当作资料查)

    转载: 在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或 替换那些符合某个模式的文本内容.许多程序设计语 ...

  8. Javascript:父类可以调用子类吗?

    问:父类可以调用子类吗? 答:可以,经典的模板方法模式就是用的这个特性.

  9. cas 获取session中的用户信息

    <%Object object =request.getSession().getAttribute("_const_cas_assertion_");Assertion a ...

  10. STL iterator和reverse_iterator

    先看一段代码: #include <iostream> #include <deque> #include <algorithm> #include <ite ...