---------------------------------会话跟踪技术---------------------------------------
会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应
会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自同一浏览器,以便在同一次会话的多次请求间共享数据
HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享
客户端会话跟踪技术:Cookie
服务端会话跟踪技术:Session
---------------------------------Cookie
Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息
//基本使用
发送Cookie
1.创建Cookie对象,设置数据
Cookie cookie = new Cookie("key","value");
2.发送Cookie到客户端:使用response对象
response.addCookie(cookie);
获取Cookie
3.Cooike[] cookies = request.getCookies();
4.遍历数组,获取每一个Cookie;
5.获取数据 cookie.getName() cookie.getValue();
//原理
Cookie的实现是基于HTTP协议的
响应头:set-cookie
请求头:cookie
//使用细节
Cookie存活时间
>默认情况下,存储在浏览器中,浏览器关闭后,Cooike也被销毁
>setMaxAge(int seconds):设置Cookie存活时间
1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除
2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁
3.零:删除对应Cookie
Cookie存储中文
>Cookie默认不能存储中文
>存储中文需要进行URL编码
URLEncode URLDecode
--------------------------------Session
Session是服务器为了保存用户状态而创建的一个特殊的对象。
当浏览器第一次访问服务器时,服务器创建一个session对象(该
对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId
以cookie的方式发送给浏览器。
当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据
sessionId就可以找到对应的session对象。
JavaEE提供HTTPSession接口,来实现一次会话的多次请求间数据共享功能
//使用:
1.获取Session对象 request.getSession();
2.Session对象功能:
void setAttribute(String name,O object);设置键,值,存到request域中
Object getAttribute(String name);通过键,获取值
void removeAttribute(String name);通过键,删除该键值对
//原理
Session是基于Cookie实现的
//使用细节
·Session钝化、活化
服务器重启后,Session中的数据是否还存在?
>钝化:服务器正常关闭后,Tomcat会自动将Session数据写入硬盘文件中
>活化:再次启动服务器后,从文件中加载数据到Session中
·Session销毁
默认情况下,无操作,30分钟自动摧毁
<session-config>
<session-timeout>30</session-timeout>
</session-config>
调用Session对象的invalidate()方法
Cookie和Session都是来完成一次会话内多次请求间数据共享的
区别:
存储位置:Cookie是将数据存储在客户端,Session将数据存储在服务端
安全性:Cookie不安全,Session安全
数据大小:Cookie最大3KB,Session无大小限制
存储时间:Cookie可以长期存储,Session默认30分钟
服务器性能:Cookie不占服务器资源,Session占用服务器资源
本文详细解析了会话跟踪技术,包括Cookie作为客户端会话跟踪,其原理、存储、编码以及Session作为服务端会话跟踪,如何通过HTTPSession实现数据共享。对比了两者在存储位置、安全性、大小和性能上的关键特性。
1338

被折叠的 条评论
为什么被折叠?



