JavaWeb——Cookie
2019-05-30 本文已影响0人
定格r
1.会话技术
1.会话:一次会话中包含多次请求和响应。
浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止
2.功能:在一次会话的范围内的多次请求间,共享数据
3.方式:
- 客户端会话技术:Cookie
- 服务器端会话技术:Session
2.Cookie:
1.概念:
客户端会话技术,将数据保存到客户端
2.快速入门:
- 使用步骤:
1.创建 Cookie对象,绑定数据
new Cookie(String name,String value)
2.发送 Cookie 对象
response.addCookie(Cookie cookie)
3.获取 Cookie,拿到数据
Cookie[] request.getCookies()
例子:
//获取 Cookie
Cookie[] cs=request.getCookies();
//获取数据,遍历 Cookies
if(cs!=null){
for (Cookie c:cs) {
String name=c.getName();
String value=c.getValue();
System.out.println(name+":"+value);
}
}
3.实现原理:
image.png基于响应头 set-cookie 和请求头 cookie 实现
4. cookie 细节
1.一次可不可以发送多个 cookie ?
可以
可以创建多个 cookie 对象,使用 response 调用多次 addcookie 方法发送 cookie 即可。
2.cookie 在浏览器中保存多长时间?
1.默认情况下,当浏览器关闭后, cookie 数据被销毁
2.持久化存储
setMaxAge(int seconds)
- 正数: 将 cookie 数据写到硬盘的文件中。持久化存储。cookie 存活时间
- 负数:默认值
- 零:删除 cookie 信息
- cookie 能不能存储中文?
- 在 Tomcat 8 之前 ,cookie中不能直接存储中文信息
需要将中文数据转码 ,一般采用 URL 编码(%E3) - 在 Tomcat 8 之后,cookie 支持中文版本
4.cookie 共享问题?
1.假设在一个 Tomcat 服务器中,部署了多个 web 项目,那么 在这些项目中 cookie 能不能共享?
- 默认情况下 cookie 不能共享
- setPath(String path );设置 cookie 的取值范围。默认情况下设置当前虚拟目录
如果要共享,则可以将 path 设置为 “/”
2.不同的Tomcat 服务期间 cookie 共享问题?
- setDomain(String path):如果设置一级域名相同,那么多个服务器之间 cookie 可以共享
setDomain(“.baidu.com”),那么 tieba.baidu.com 和 news.baidu.com 中 cookie 可以共享
5.Cookie 的特点和作用
特点:
- 1.cookie 存储数据在客户端浏览器
- 2.浏览器对于单个 cookie 的大小有限制(4 kb) 以及 对同一域名下的总 cookie 数量也有限制(20个)
作用:
- 1.cookie 一般用于存储少量的不太敏感的数据
- 2.在不同的登录情况下,完成服务器对客户端的身份识别