1)cookie和session区别?
Cookie会话数据保存在浏览器端
Session会话数据保存在服务器端
2)cookie类中的主要api。
Cookie类:用于存储会话数据
1)构造Cookie对象
Cookie(java.lang.String name, java.lang.String value)
2)设置cookie
void setPath(java.lang.String uri) :设置cookie的有效访问路径
void setMaxAge(int expiry) : 设置cookie的有效时间
void setValue(java.lang.String newValue) :设置cookie的值
3)发送cookie到浏览器端保存
void response.addCookie(Cookie cookie) : 发送cookie到浏览器
4)服务器接收cookie
Cookie[] request.getCookies() : 从浏览器接收cookie对象
问题3)cookie的有效路径?(cookie数据在访问哪个路径时候有效,request带哪些cookie数据)
1)默认的情况下,cookie的有效路径是当前项目下。
2)设置cookie的有效路径。(决定request带哪些cookie数据)
请求数据中,只有请求该路径的时候,会带上该路径下的所有cookie数据。
问题4:)设置cookie的有效时间。(默认情况下是浏览器关闭,cookie删除)
* void setMaxAge(int expiry)
* 正整数:表示cookie保存在硬盘上,多少秒。(浏览器关闭也不会影响cookie值)
* 负整数(任意负数):表示cookie保存在浏览器内存中。(关闭浏览器cookie删除)
* 零:表示删除同名的cookie
cook01.setMaxAge(10); // 10秒钟删除
cook02.setMaxAge(-1); // 关闭浏览器,删除cookie
Cookie cook03 = new Cookie("password","");
cook03.setMaxAge(0); // 删除同名的cookie
问题5)浏览器cookie的存储空间?
浏览器允许存放300个cookie,每一个站点最多存放20个cookie,每个cookie最大4kb
6)例子:
1) 创建cookie
Cookie cook01 = new Cookie(“user”,”123”);
Cookie cook02 = new Cookie(“password”,”abc”);
2)设置cookie的访问路径.
* setPath()
* 默认是在当前项目下有效:浏览器request头会带上cookie数据,只带该路径下的cookie数据。
cook01.setPath(“/testcookiepath”);
cook02.setComment(“/dialog”);
3)设置cookie的有效时间。
* void setMaxAge(int expiry)
* 正整数:表示cookie保存在硬盘上,多少秒。(浏览器关闭也不会影响cookie值)
* 负整数(任意负数):表示cookie保存在浏览器内存中。(关闭浏览器cookie删除)
* 零:表示删除同名的cookie
cook01.setMaxAge(10); // 10秒钟删除
cook02.setMaxAge(-1); // 关闭浏览器,删除cookie
Cookie cook03 = new Cookie("password","");
cook03.setMaxAge(0); // 删除同名的cookie
4)把cookie数据发送给浏览器.
* 方法1)通过http协议头信息,发送到浏览器。(如果有多个key-value对,在后面追加,不能再写一次setHeader)
* setheader()方法只能调用一次,不然只能保留最后一次发送的cookie
* 方法2)通过addCookie方法。(封装好的方法)
* 可以多次调用addCookie方法。
//方法1
response.setHeader(“Set-Cookie”,cook01.getName()+”=”+cook01.getValue()+cook02.getName()+”=”+cook02.getValue());
//方法2
response.addCookie(cook01);
response.addCookie(cook02);
5)接收浏览器发送过来的cookie
* 方法1)通过该http获取头方法。
* getHeader(cookie);来获取所有的cookie
* 方法2)通过
//方法1
// String userpd = request.getHeader(“cookie”);
// System.out.println(userpd);
//方法2
Cookie[] cooks = request.getCookies();
if(cooks != null){
for(Cookie ck : cooks){
String key = ck.getName();
String value = ck.getValue();
System.out.println(key+"="+value);
}
}else{
System.out.println("cookie为空!,浏览器没有存储的cookie");
}