会话技术
会话的概念:一次服务器的访问中包含多次请求和响应
一次会话:客户端第一次给服务器发送请求,此时会话建立,在此过程中有多次的请求和响应,直到有一方断开
会话技术分为:
- Cookie:(饼干)客户端会话技术
- Session:(主菜)服务端会话技术
Cookie
一. 概念和实现步骤
客户端会话技术,将数据保存到客户端中
实现步骤:
1、创建Cookie对象,将数据绑定在Cookie对象中
new Cookie(key , value);
2、将Cookie封装在响应头中,发送给客户端
response.addCookie(cookie对象);
3、获取请求头中的Cookie
getCookies()
二. Cookie的细节问题
2.1 一次响应是否可以发送多个Cookie
可以的,做法是创建多个Cookie对象绑定各自的数据,分别使用response发送给客户端
2.2 Cookie能在客户端(浏览器)中存多久
- 默认情况下,在浏览器关闭后,Cookie数据就被销毁
- 持久化存储Cookie:setMaxAge( seconds ),参数是秒,int类型
- 正数:存储的时长
- 负数:默认值(会话结束就释放->浏览器关闭就释放->默认情况)
- 0:清除Cookie
2.3 Cookie中是否可以存储中文
默认情况是不可以的,但是可以通过一些额外的手段去让中文可以存储在Cookie中
- 使用tomcat 8及以上的版本
- 可以在发送给客户端之前,对中文进行编码URLEncoder.encode(name,"utf-8");,在服务端获取数据后进行解码URLDecoder.decode(name,"utf-8");
2.4 Cookie数据的共享问题
setPath( 路径 )
默认情况下,当前项目中的所有资源都能共享Cookie数据
- 如果想要在同一个服务器的其他项目中也能访问到Cookie数据,该怎么做?
- setPath("/")
- 如果想要限制Cookie数据只能在某个资源中被访问到,该怎么做?
- setPath( 指定的路径 )
- 如果想要在不同服务器中共享Cookie数据,该怎么做?
- setDomain( ".baidu.com" ),只要一级域名相同,不同服务器间的Cookie数据
2.5 Cookie存储数据量的特点
- 单次存储数据量的大小有限制,一般是4k
- 浏览器保存同一站点(服务器)的Cookie数量也有限制