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的数据读取。
总结:
- 可以实现自动登录。用户名和密码默认是明码的。开发者需要自定义加密。Md5 Base64
- 购物车的商品ID信息
- 存储用户上次的登录时间
使用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细节
- 一个Cookie只能存储一种信息。
- 一个网站可以发送多个Cookie,浏览器可以同时携带多个Cookie。
- 同一个网站最多发送20个Cookie,浏览器最多存储300个Cookie,一个Cookie最多存储数据在4K以内。
- 如果创建了Cookie对象没有指定最大有效时间那么不会存储在浏览器的缓存中。
Cookie技术的更多相关文章
- php中cookie技术关于跨目录调用cookie值的问题
今天做项目发现了一个奇葩错误,以cookie技术为主,反复测试发现cookie不能跨目录调用. 我在F:wamp\www\test\下面有1.php和2.php其中1.php接受2.php中setco ...
- js操纵cookie技术
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- Cookie技术详解
1. Cookie的特性 属性: 1> name: Cookie的名字 2> value: Cookie的值 3> path: 可选,Cookie的存储路径,默认情况下的存储路径时访 ...
- cookie技术简介
Cookie简介 众所周知,HTTP协议是一个无状态的协议.一个Web应用由很多个Web页面组成,每个页面都有唯一的URL来定义.用户在浏览器的地址栏输入页面的URL,浏览器就会向Web Server ...
- javaWeb学习总结(6)- 会话之cookie技术
什么是会话? 在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程就是一个会话. 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为 ...
- 会话技术、Cookie技术与Session技术
一.会话技术 1. 存储客户端状态 会话技术是帮助服务器记住客户端状态(区分客户端)的. 2. 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话.会话技术就是记录这 ...
- #WEB安全基础 : HTTP协议 | 0x8 HTTP的Cookie技术
说道Cookie,你喜欢吃饼干吗? 这里的Cookie不是饼干=_= HTTP不对请求和响应的通信状态进行保存,所以被称为无状态协议,为了保持状态和协议功能引入了Cookie技术 Cookie技术在请 ...
- Java第三阶段学习(十三、会话技术、Cookie技术与Session技术)
一.会话技术 1. 存储客户端状态 会话技术是帮助服务器记住客户端状态(区分客户端)的. 2. 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话.会话技术就是记录这 ...
- java基础79 会话管理(Cookie技术、Session技术)
1.概念 会话管理:管理浏览器和服务器之间会话过程中产生的会话数据. Cookie技术:会话数据保存到浏览器客户端.[存 编号/标记(id)] Session技术:会话技术会保存到 ...
- 会话管理之Cookie技术
会话管理是web开发中比较重要的环节,这一节主要总结下会话管理中的cookie技术. 1. 何为会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个 ...
随机推荐
- jQuery Mobile 页面事件
jQuery Mobile 页面事件 在 jQuery Mobile 中与页面打交道的事件被分为四类: Page Initialization - 在页面创建前,当页面创建时,以及在页面初始化之后 P ...
- DC-DC converter Control techniques
As shown in figure 3.4, PWM controller contains two main parts; voltage error-amplifier and voltage ...
- JavaScript学习10:动态载入脚本和样式
我们在写Web页面的时候,须要引入非常多的JavaScript脚本文件和CSS样式文件,尤其是在站点需求量非常大的时候,脚本的需求量也随之变大,这样一来,站点的性能就会大打折扣.因此就出现了动态载入的 ...
- 解决IIS 不能下载.exe.config文件的方法
IIS允许下载".config"文件 Config文件是web的配置文件,默认是不允许下载的,就算在MIME中配置“application/octet-stream”,也是下载不了 ...
- 将Linux代码移植到Windows的简单方法
一.前言 Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的.Windows平台根本无法直接利用这些源代码资源.如果想要使用完整的代码,就要做移植工作.因为C/C ...
- 《Android传感器高级编程》
<Android传感器高级编程> 基本信息 原书名:Professional Android Sensor Programming 原出版社: Wrox 作者: (美)米内特(Greg M ...
- 《iOS应用逆向工程:分析与实战》
<iOS应用逆向工程:分析与实战> 基本信息 作者: 沙梓社 吴航 刘瑾 丛书名: 信息安全技术丛书 出版社:机械工业出版社 ISBN:9787111450726 上架时间:2 ...
- WPF性能调试系列 – 应用程序时间线
WPF性能调试系列文章: WPF页面渲染优化:Application Timeline WPF页面业务加载优化:Ants Performance Profiler WPF内存优化:Ants Memor ...
- linux系统编程:守护进程详解及创建,daemon()使用
一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.它不需要用户输入就能运行而且提供某种服务,不是对整个 ...
- add-strings
https://leetcode.com/problems/add-strings/ package com.company; import java.util.LinkedList; import ...