cookie入门

会话技术

  会话是指一个终端用户与交互系统进行通讯的过程。

  一次会话过程中包含多次请求和响应。

  浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止。

  客户端会话技术:cookie    服务器端会话技术:session

Cookie会话技术

  cookie是客户端会话技术,将数据保存到客户端,cookie只能存放字符串数据(键值对)

  cookie一般用于存出少量的不太敏感的数据

  在不登录的情况下,完成服务器对客户端的身份识别

   cookie的原理细节是,客户端在第一次请求的时候,服务器的响应会携带一些数据信息,此时客户端会将这些数据信息放到客户端本地,并在之后的请求中携带这些数据信息。

new Cookie(String name, String value)  创建Cookie对象,绑定数据
response.addCookie(Cookie cookie)  发送Cookie对象
Cookie[]  request.getCookies()   获取Cookie,拿到数据

cookie的细节

可以发送多个cookie吗

  一次可以发送多个cookie,我们可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可

cookie保存问题

  1. 默认情况下,当浏览器关闭后,Cookie数据被销毁

  2. 持久化存储:

cookie.setMaxAge(int seconds)

1. 正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效
2. 负数:默认值
3. 零:删除cookie信息

cookie的中文问题

  在tomcat8之前,cookie中不能直接存储中文数据,需要进行转码,一般使用URL转码

  在tomcat8之后,cookie支持中文cookie,但不支持特殊字符,如空格,所以也一般使用URL转码

cookie的共享问题

  我们有这样一个问题,假设在一个tomcat服务器中,部署了多个web项目,那么这些的web项目的cookie能不能共享呢?

  答案是默认情况下是不能的,我们可以通过这个方法设置cookie的获取范围

cookie.setPath(String path) 设置cookie的获取范围。默认情况下,设置当前的虚拟目录

  如果设置为本项目的虚拟目录,则本项目的web资源都能获取cookie数据

  如果想要设置为其他项目能获取cookie数据,则设置为"/"即可

  不同的tomcat服务器cookie共享问题:

setDomain(String path) 如果设置一级域名相同,那么多个服务器之间cookie可以共享

  例如:setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享

cookie的特点

  1. cookie存储数据在客户端浏览器

  2. 浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)

一点一点积累,一点一点蜕变!
原文地址:https://www.cnblogs.com/qq2210446939/p/14833009.html