会话技术Cookie

会话:浏览器第一次给服务器资源发送请求,会话建立,直到一方面断开为止。 一次会话中包含多次请求和响应。
会话的功能:在一次会话中的多次请求间,共享数据
会话的方式:
1.客户端技术:Cookie
2.服务器端技术:Session
Cookie的概念:一种客户端会话技术,将小段文本信息保存在客户端浏览器上。

Cookie的使用步骤:
1.创建Cookie对象,绑定数据
Cookie(String name, String value);
2.发送Cookie对象。
HttpServletResponse接口
void addCookie(Cookie cookie);
3.获取Cookie,拿到数据。
HttpServletRequest接口
Cookie[] getCookies();

二、Cookie原理:
在这里插入图片描述

三、Cookie的细节:
(一)、一次可不可以发送多个cookie?
可以的,添加的时候添加进Cookie就可以
在这里插入图片描述

添加Cookie的响应头:
在这里插入图片描述
具有多个Cookie的请求头:

在这里插入图片描述
(二)、cookie在浏览器中保存多长时间?
默认情况下,当浏览器关闭后,Cookie数据被销毁。
设置Cookie的生命周期,进行持久化存储
setMaxAge(int Seconds)
1.正数:将cookie数据写到硬盘的文件中,进行持久化存储。cookie的存活时间
2.负数:默认值,按照默认周期进行存活,就是浏览器的会话创建到停止,也就是浏览器关闭
3.零:代表删除对应的cookie信息。
关于cookie的生命周期,如果通过SetMaxAge设置持久化的cookie的话,即使服务器关闭了,在生命周期内cookie都是存活的,下次在同一浏览器进行访问时还是有效
(三)、cookie能不能存中文?
在Tomcat8.0之前不能直接存储中文数据,在8.0之后,cookie支持中文数据。
这里要注意的是Cookie的name不能是中文,否则报405。

(四)、cookie获取的范围有多大?
假设在一个服务器中部署了多个web项目,各个web项目中的cookie默认情况下是相互独立的,不能共享。
但是在Cookie中有一个方法:setPath(String path):设置cookie的获取范围,默认为对应web项目。如果要在所有在服务器中的项目中数据共享,可以将路径设置为path为"/" 。
不同的tomcat服务器之间的数据共享问题(暂时用不到的):这个真他妈的可以。调用setDomain(String path):如果设置一级域名相同,那么部署在不同服务器上的具有相同一级域名的项目之间的cookie数据就是可以共享的了。

四、cookie的特点:
1.cookie存储在客户端浏览器,安全性不像存储在服务器上的安全性那么高。
2.浏览器对于单个cookie的大小和对于同一个域名下的cookie的数量也有限制。一般cookie的大小不能超过4K,同一域名下的数量一般不能超过20个。

五、cookie作用:
1.cookie一般用来存储少量的不太敏感的数据
2.在不登录的情况下,完成服务器对客户端的身份识别。比如浏览器记录搜索记录。

零小碎的知识点:cookie中的不能存储带"(空格)“的字符串,不能存储带”,"的字符串,存了就报异常:IllegalArgumentException

在Servlet中,当JSP页面没有显式禁止session的时候,在打开浏览器第一次请求该jsp的时候,服务器会自动为其创建一个session,并赋予其一个sessionID,发送给客户端的浏览器。以后客户端接着请求本应用中其他资源的时候,会自动在请求头上添加:(Cookie:JSESSIONID=客户端第一次拿到的session ID)。这个cookie是服务器自动生成的,他的max-age为-1,变松hi仅当前浏览器有效。关闭浏览器失效,浏览器子窗口共享,各浏览器窗口不共享。这样,服务器端在接到请求时候,就会收到session ID,并根据ID在内存中找到之前创建的session对象,提供给请求使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值