Cookie技术

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实现显示用户的上次访问时间


 1 public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
2 // 页面输出
3 response.setCharacterEncoding("utf-8");
4 response.setContentType("text/html;charset=utf-8");
5 request.setCharacterEncoding("utf-8");
6 // 获取字符输出流对象
7 PrintWriter out = response.getWriter();
8 // 获取Cookie数组对象
9 Cookie [] cookies = request.getCookies();
10 // 定义一个时间的字符串变量
11 String date = null;
12 // 定义一个变量存储系统当前日期
13 Date current_date = new Date();
14 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
15 // 判断是否是第一次登陆
16 if(cookies != null){
17 // 直接循环
18 for(Cookie cookie : cookies){
19 // 获取Cookie
20 if("lasttime".equals(cookie.getName())){
21 // 获取上次访问的时间
22 date = cookie.getValue();
23 break;
24 }else{
25 // 获取系统时间
26 date = format.format(current_date);
27 }
28 }
29 }else{
30 // 获取系统时间
31 date = format.format(current_date);
32 }
33 // 显示时间
34 out.println(date);
35 // 将这次访问的时间写入Cookie
36 Cookie new_cookie = new Cookie("lasttime",
37 format.format(new Date()));
38 new_cookie.setMaxAge(5*60);
39 new_cookie.setPath("/day08/showtime");
40 // 发送
41 response.addCookie(new_cookie);
42 }

Cookie细节


  1. 一个Cookie只能存储一种信息。

  2. 一个网站可以发送多个Cookie,浏览器可以同时携带多个Cookie。

  3. 同一个网站最多发送20个Cookie,浏览器最多存储300个Cookie,一个Cookie最多存储数据在4K以内。

  4. 如果创建了Cookie对象没有指定最大有效时间那么不会存储在浏览器的缓存中。

Cookie技术

时间: 2024-10-06 00:22:35

Cookie技术的相关文章

黑马day05 Cookie技术入门&记录上次访问的时间

1.Cookie技术: 客户端技术 Cookie是基于set-Cookie响应头和Cookie请求头工作的,服务器可以发送set-Cookie请求头命令浏览器保存一个cookie信息,浏览器会在访问服务器时以Cookie请求头的方式带回之前保存的信息 request.getCookies(); response.addCookie(Cookie c); new  Cookie(String name,String value)//Cookie在构造的时候就需要设定好cookie的名字和值 get

会话管理之Cookie技术

会话管理是web开发中比较重要的环节,这一节主要总结下会话管理中的cookie技术. 1. 何为会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称为一个会话. 1.1 会话过程中要解决的问题 1)每个用户在使用浏览器与服务器进行会话的过程中,不可避免会各自产生一些数据,程序要想办法为每个用户保存这些数据.        2)如:用户点击超链接通过一个servlet购买了一个商品,程序应该想办法保存用户购买的商品,以便于用于点结账serv

cookie技术案例-用户浏览商品的记录

1引言 你点击了桌面上的Chrome图标,一个浏览器窗口出现了,输入网址就可以在Internet世界愉快玩耍.这一切是怎么实现的呢?Chromium这个多进程的程序是如何启动各个进程的呢?浏览器主进程(界面进程)启动了哪些线程?如何启动的呢?这些问题一直萦绕在心头,一起来看看源代码吧.本文主要针对Chromium for Mac的源代码,其它操作系统大同小异. 2背景知识 浏览器作为一个应用程序,是以进程的形式运行在操作系统上的.首先,Chromium是一个多进程的应用程序,我们需要了解Chro

js操纵cookie技术

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>图片浏览</title> <script ty

cookie技术实现自动登录+cookie中写入中文+记住用户名

结合上次写的cookie技术实现自动登录添加部分功能<tr> <td colspan="2"> <input type="checkbox" name="usernamelogin" id="usernamelogin" value="usernameOk" >记住用户名 <input type="checkbox" name="aut

[转]不用Cookie的“Cookie”技术

有另外一种比较隐蔽的用户追踪技术,不使用cookie或者Javascript.很多网站已经在用了,但知道的人不多.本文就来介绍一下这种技术是如何追踪用户,用户又该如何避免追踪. 这种技术不依赖于: Cookies Javascript LocalStorage/SessionStorage/GlobalStorage Flash, Java或插件 你的IP地址或者User Agent头 Panopticlick 相反,它使用另外一种存储方式,而这种存储即使浏览器关闭仍然能够存在,那就是浏览器缓存

Servlet之Cookie技术

前言:我们可以知道,由于Http的无状态性,也就是说当用户发送一次请求给服务器之后,服务器响应客户端的请求,当同一个客户端再次发送请求给服务器时,服务器并不知道这个请求是同一个客户端发送的.由此产生了Session追踪技术来保持状态,总共四个保持状态的方法:网址重写(URL传参),隐藏域(表单提交),cookie技术,session技术.今天来提一下第三种cookie技术. 一.cookie简介 cookie是自动地在Web服务器和客户端之间传递的一小块信息,并存放在客户端所在的硬盘上,适用于需

【Web入门系列】初探会话管理-Cookie技术

特点 会话数据保存在浏览器客户端. Cookie技术核心 1.构造Cookie对象 Cookie(String name, String value) 2.设置cookie #设置cookie的有效访问路径 void setPath(String uri) #设置cookie的有效时间 void setMaxAge(int expiry) : @设置cookie的值 void setValue(String value) : 3.发送cookie到浏览器端保存 void response.add

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

说道Cookie,你喜欢吃饼干吗? 这里的Cookie不是饼干=_= HTTP不对请求和响应的通信状态进行保存,所以被称为无状态协议,为了保持状态和协议功能引入了Cookie技术 Cookie技术在请求和响应报文中写入Cookie信息来控制客户端的状态 Cookie根据从服务器发送的请求报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再访问该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后再发送 服务器发现客户端发送的Cookie后,会检查