一文通cookie和Session
目录
简介
会话:
用于打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话可以包含多次请求和响应(同一浏览器发送的多次请求为一次会话,不同浏览器发送请求属于不同的会话)
会话跟踪:
一种维护浏览器状态的方法,服务器需要识别多次请求是哦否来自同一浏览器,以便在同一次会话的多次请求间共享数据(服务器无法识别每次请求是否来自同一浏览器)
HTTP协议是无状态的,每次浏览器向服务器时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术。(设置为无状态是为了响应速度)
Cookie和session就是用来解决一次会话间多次请求间数据共享的问题。
实现方式:
1、客户端会话跟踪技术:Cookie
2、服务端会话跟踪技术:Session
Cookie基本使用
Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问
Cookie基本使用
发送Cookie
1、创建Cookie对象,设置数据
2、发送Cookie到客户端:使用response对象
1、在src下创建一个com包下CookieServlet类
2、web.xml配置
启动访问即可,f12查看
获取Cookie
3、获取客户端携带的所有Cookie,使用request对象
4、遍历数组,获取每一个Cookie对象:for
5、使用Cookie对象方法获取数据
创建CookieServlet1类,再配置web.xml
先访问cookieServlet,在访问cookieServlet1得
这就实现了,同一浏览器的两次访问(cookieServlet和cookieServlet1两次)数据共享
Cookie原理
Cookie的实现是基于HTTP协议的
响应头:set-cookie
请求头:cookie
访问时f12查看网络
Cookie使用细节
cookie存活时间
默认情况下,cookie存储在浏览器内存中,当浏览器关闭,内存释放,则cookie被销毁
setMaxAge(int seconds):设置Cookie存活时间
①正数:将Cookie写入浏览器所在的电脑的硬盘,持久化存储,到时间自动删除
②负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭时,则Cookie被销毁
②零:删除对应Cookie
Cookie存储中文
Cookie默认不能存储中文
如果需要储存,则需要进行转码:URL编码
默认情况不支持中文:
CookieServlet类下
CookieServlet1类下
Session介绍
服务端会话跟踪技术:将数据保存到服务端
JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能
使用:
1、获取Session对象
2、Session对象功能
创建两个类SessionServlet和SessionServlet1
web.xml配置两个类的访问地址
先访问①后访问②运行得
Session原理
Session是基于Cookie实现的
获取的对象有唯一的标识id的,tomcat把session的id当成cookie发送给浏览器,tomcat在响应是会加上set-cookie这个响应头JSESSIONID=值存储到浏览器内存中,第二次获取时就会去内存中寻找有无id为之前的,有就直接用那数据,没有就创建
Session使用细节
Session钝化、活化
服务器重启,Session中的数据还会存在?
钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘文件中
活化:在次启动服务器后,从文件中加载数据到Session中
Session销毁:
①默认情况下,无操作30分钟后自动销毁(下列单位分钟)
②调用Session对象的invalidate()方法
浏览器一关,session就销毁了,因为session是通过cookie传输
小结
Cookie和Session都是来完成一次会话内多次请求间数据共享的
区别:
存储位置:Cookie是将数据存储在客户端,Session将数据储存在服务器
安全性:Cookie不安全,Session安全
数据大小:Cookie最大3KB,Session无大小限制
存储时间:Cookie可以长期存储,Session默认30分钟
服务器性能:Cookie不占服务器资源,Session占用服务器资源
- 点赞
- 收藏
- 关注作者
评论(0)