JavaWeb——Cookie和Session(会话技术)
2019-05-22 17:58
465 查看
1.会话技术
1.1.概念
会话:一次会话中包含多次请求和响应
一次会话:浏览器第一给服务器资源发送请求,会话建立,直到有一方断开为止
会话的功能:在一次会话的范围内的多次请求间共享数据
1.2.方式
- 客户端会话技术:
Cookie
,将来将数据存在客户端 - 服务器端会话技术:
Session
,将来将数据存在服务器
2.Cookie
Cookie:客户端会话技术,将数据保存在客户端
2.1.Cookie快速入门
使用步骤:
- 创建Cookie对象,绑定数据
new Cookie(String name,String value)
- 发送Cookie对象
response.addCookie(Cookie cookie)
- 获取Cookie,拿到数据
Cookie[] request.getCookies()
2.2.Cookie实现原理
2.3.Cookie的细节
2.3.1.一次可不可以发送多个Cookie
可以,创建多个Cookie对象,使用response对象的addCookie方法多次发送Cookie即可
2.3.2.Cookie在浏览器中保存多久
默认
情况下,当浏览器关闭后
,Cookie数据被销毁设置Cookie声明周期
,使他持久化存储
用Cookie对象调用setMaxAge(int seconds)方法
- 正数:将Cookie数据
写到硬盘文件中持久化存储,second表示cookie存活时间,单位是秒- 负数:默认值,存
在浏览器内存中,浏览器一关闭就销毁Cookie数据- 零:
删除Cookie数据
2.3.3.Cookie能不能存中文
在
Tomcat8之前,Cookie中不能直接存储中文数据(需要将中文数据转码——一般采用URL编码),在Tomcat8之后,Cookie支持中文数据。
2.3.4.Cookie共享问题
- 1.假设在一个Tomcat服务器中部署了多个Web项目,那么在这些项目中Cookie是否共享?
默认情况下Cookie不能共享- setPath(String path):设置Cookie的获取范围,默认情况下设置当前项目的虚拟目录,如果要共享,则将path设置为:"/"
- 2.不同的Tomcat服务器间Cookie共享问题
setDomain(String path):如果设置一级域名相同,那么多个服务器间Cookie共享
2.4.Cookie的特点
- Cookie
存储数据在客户端浏览器
浏览器对于单个Cookie的大小有限制
(一般4K左右,和浏览器有关)以及对同一个域名下的总Cookie数量也有限制
(一般20个左右,和浏览器有关)
2.5.Cookie的作用
- Cookie一般用于
存储少量的不太敏感的数据
在不登录的情况下完成服务器对客户端的身份识别
(主要作用)
3.Session
3.1.概念
Session:
服务器端会话技术,
在一次会话的多次请求间共享数据,
将数据保存在服务器对象中
3.2.Session快速入门
获取Session对象
:HttpSession session = request.getSession();使用HttpSession对象:
- Object getAttribute(String name)
- void setAttribute(String name,Object value)
- void removeAttribute(String name)
3.3.Session原理分析
服务器如何确保在一次会话范围内多次获取的Session对象是同一个?
第一次获取Session,没有Cookie,会在内存中创建一个新的Session对象,他会有一个
唯一的ID,接下来做响应时,会发送响应头:set-cookei:JSESSIONID=唯一的ID,客户端此时将Cookie信息存到浏览器,下次再次访问项目其他资源时通过cookie请求头带过去了JSESSIONID,服务器自动获取cookie信息在根据这个信息查看内存中有没有和JSESSIOID对应的Session对象,如果找到了,getSession方法就找到了这个对象并返回,所以两次的Session是同一个,服务器就是通过Cookie确保一次会话中获取的Session是同一个
3.4.Session的细节
3.4.1.当客户端关闭后,服务器不关闭,两次获取Session是否为同一个
默认情况下不是
- 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让Cookie持久化保存
//希望客户端关闭后再次获取Session能相同 Cookie cookie = new Cookie("JSSIONID",session.getId()); cookie.setMaxAge(60 * 60); response.addCookie(cookie);
3.4.2.客户端不关闭,服务器关闭后,两次获取的Session是同一个吗
不是同一个(就是偶然相同也是巧合),但是要确保数据不丢失(
session的钝化和活化——Tomcat已经完成了钝化和活化工作)
- session的
钝化:在服务器正常关闭之前,将session对象序列化到硬盘上- session的
活化:在服务器启动后,将session文件转化(反序列化)为内存中的session对象即可- 注意:IDEA可以完成钝化但是无法活化成功,要依靠本地的TomCat服务器去完成钝化和活化,但是实际开发中也不会在IDEA里面部署项目,所以关系不大
3.4.3.Session什么时间被销毁
- 服务器关闭
- session对象调用invalidate
- session默认失效时间是30分钟(可以在配置文件中修改(如下前两张图),也可以在项目中配置(配置内容如下第三个图))
3.5.Session的特点
- Session用于
存储一次会话的多次请求的数据
,存储在服务器端
- Session
可用于存储任意类型、任意大小的数据
4.Session与Cookie区别
Session | Cookie | |
---|---|---|
存储位置 | 服务器端 | 客户端 |
大小限制 | 没有数据大小限制 | 有限制,与具体浏览器相关 | 1d25c
安全性 | 相对安全 | 相对不安全 |
相关文章推荐
- JavaWeb学习之转发和重定向、会话技术:cookie、session、验证码实例、URLConnection使用(下载网页)(4)
- JavaWeb学习笔记五 会话技术Cookie&Session
- 大数据WEB阶段(十二)会话技术、Cookie、Session及两者的区别
- 9 会话技术cookie与session
- 【PHP基础 08-会话控制技术】简述 cookie 和 session的区别及各自的工作机制,存储位置等,简述 cookie 的优缺点。
- 会话技术:cookie和session
- 5分钟学会Cookie和Session技术(web会话技术,属于web核心必会知识)
- JavaWeb(二)会话管理之细说cookie与session
- Cookie&Session会话技术&Servlet三个作用域总结
- 会话技术:Cookie和Session
- javaWeb技术之session和cookie的区别与联系
- Cookie和Session会话技术
- 会话技术:session 和 cookie
- 会话技术(Cookie与Session)揭密
- 会话技术Cookie和Session
- 会话技术 cookie和session 学习笔记
- JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解
- 会话技术Cookie&Session
- 会话技术Cookie&Session