Cookie 原来指就着牛奶一起吃的点心,因特网中指一种技术:指Web应用服务器为了辨别用户身份、进行 session 跟踪而储存在客户端上的数据,该数据通常经过了加密;
cookie不是内置对象
浏览器访问Web服务器某个资源时,Web服务器在HTTP响应消息头中附带传给浏览器的信息,该信息在客户端浏览器存储;当客户端浏览器再次请求该资源时,会在在HTTP请求消息中增加Cookie请求头字段将Cookie再回传给Web服务器。
浏览器保存某个Cookie后,在每次访问该Web服务器时都会在HTTP请求头中将这个Cookie回传给Web服务器。
一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值。Cookie cookie=new Cookie(name,值); cookie可用于Java也可以用于JavaScript
一个Web站点可以给一个浏览器发送多个Cookie,一个浏览器也可以存储多个Web站点提供的Cookie.
浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB(1KB可以保存512个汉字)。
原理和使用
原理:Web服务器通过在HTTP响应信息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器再次向Web服务器发送请求时,在HTTP请求消息中增加Cookie请求头字段将Cookie再回传给Web服务器。
使用步骤
1.创建Cookie对象
Cookie cookie=new Cookie(name,值);
2、 调用response方法将Cookie传给客户端
response.addCookie(cookie);
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>Cookie</title> </head> <body> <% Cookie []cookies=request.getCookies();//获得所有cookie if(cookies!=null){ for(Cookie cookie : cookies){ if(cookie.getName().equals("name")){ String value = cookie.getValue(); System.out.println(value); } } }else{ Cookie cookie=new Cookie("name","Tom"); response.addCookie(cookie); } %> </body> </html>
第一次发送请求时,无cookie,再次发送请求可以看见:
使用cookie的缺点:
安全性差(多人用一个电脑);
cookie信息是可以删除的();
cookie只能存储字符串类型的内容。
Cookie类常用方法:
getName():
getValue():
setMaxAge(int age) :默认情况下Web服务器发送到客户端浏览器的Cookie是一个会话级别的Cookie,此时的Cookie信息存储在浏览器内存中,用户退出浏览器后该Cookie被删除;若希望客户端浏览器将Cookie信息存储在磁盘文件(C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Cache)上,则需要设置Cookie最大时效,该方法传入的实参是一个以秒为单位的数值;若设置为0,则命令浏览器立即删除该Cookie。
setPath(String path):Cookie作用范围默认情况下只能作用于当前目录和当前目录的子目录,但不能作用于当前目录的上及上级目录,如果需要在上级目录中获取Cookie,需要设置Cookie作用范围:其中/代表Web站点的根目录,request.getContextPath();
可以使用cookie对象的setMaxAge方法设置Cookie过期时间。这样就可以控制Cookie生效的时间了,比如7天面登录之类的功能(但是使用Cookie安全性较差)。
cookie和session的区别
1.保存位置
session:服务器端 ,当正常关闭服务器后,session文件存放在Tomcat服务器端
cookie:浏览器客户端,默认情况下Web服务器发送到客户端浏览器的Cookie是一个会话级别的Cookie,此时的Cookie信息存储在浏览器内存中,用户退出浏览器后该Cookie被删除
2.存储类型
session 对象可以存储字符串,基本数据类型,自定义数据类型
cookie只能存储字符串类型的内容
3.生命周期
session随会话结束而关闭,即在一次会话范围内有效
cookie可以指定时长
4.存放信息的重要性
session:可以存放重要信息
cookie存放非重要的信息