Cookie&Session

本文深入探讨了会话管理技术,包括Cookie和Session的工作原理、常用方法及它们的区别。讲解了如何利用这两种技术来跟踪用户身份,保持会话状态,以及它们在安全性、存储位置和生命周期管理上的差异。

会话概述

会话

浏览器与服务器的一次连续的谈话.

具体描述

从用户打开浏览器访问服务器时,一次会话开始.

在这次会话中,浏览器与服务器可以进行任意次的请求响应.

当用户关闭浏览器窗口的时候,本次会话结束.

会话技术作用

会话技术用来存储浏览器与服务器在会话过程中产生的数据.

两种会话技术

Cookie:客户端会话技术,是由服务器创建,交给浏览器客户端存储的技术.

Session:服务端会话技术,是由服务器创建,也由服务器存储的技术.

Cookie

一、cookie工作原理

在这里插入图片描述

当浏览器第一次访问服务器时,服务器可以创建cookie,并把cookie响应给浏览器,浏览器会把cookie存储起来.
以后每次浏览器访问服务器时都会携带cookie,服务器就可以取出cookie使用.

二、Cookie常用方法

存储

new Cookie(String,String); //创建cookied
response.addCookie(cookie); //让浏览器存储cookie

取出

request.getCookies();//取出所有cookie数组
cookie.getName();//获取cookie的名称
cookie.getValue();//获取cookie的值

三、cookie的有效时间

cookie分类
会话级别的Cookie: 默认的.关闭了浏览器Cookie就销毁了.
持久级别的Cookie: 可以设置指定cookie在浏览器的存活时间 ,Cookie就不会随着浏览器关闭而销毁了.

cookie.setMaxAge(second)//cookie的有效时间
负数:默认不写 表示该cookie将保留到浏览器关闭为止。
正数:设置 cookie 的最大生存时间,以秒为单位。浏览器关闭以后有效(持久保存)
0:等价于直接删除Cookie。

四、cookie的路径作用域

cookie.setPath(“路径”)
cookie的路径:诉浏览器在请求哪些路径之下的资源时才携带这个cookie.
使用示例:
/day08/servlet1 :表示以后访问 /day08/servlet1以下的资源时携带
/day08 :表示以后访问/day08项目以下资源携带
/ : 表示tomcat根目录以下的所以项目
默认 : 表示当前servlet访问路径的上一级路径
request.getContextPath(); //获取当前项目环境路径 例如 /day08

Session

一、session工作原理

在这里插入图片描述

当浏览器第一次访问服务器时,服务器如果执行到request.getSession()方法,则会创建代表当前会话的对象Session,同时会把该session的唯一标志id属性值作为会话级别cookie(jsessionid)响应给浏览器.
在本次会话中得以后的每次请求,浏览器都会携带cookie(jsessionid),服务器根据这个session的唯一标志,直接从服务器内存中取出当前会话对象Session.

二、Session常用方法

request.getSession(); //创建或者取出一个session对象
String getId(); // 取出session的唯一标志id属性值
void setAttribute(String name,Object value);//给当前会话对象设置一个自定义属性值
Object getAttribute(String name);//从当前会话对象中取出一个属性值
void removeAttribute(String name);//移除当前会话对象中的一个属性值

三、session的过期时间

代码中设置

session.setMaxInactiveInterval(seccond);//设置有效时间秒
seession.invalidate()//立即销毁 典型用途:安全退出.

web.xml中设置

< session-timeout >minutes< /session-timeout > //项目中session的有效时间

tomcat中设置

config/web.xml < session-timeout >minutes</ session-timeout > //

注意优先级: 代码>web>tomcat

四、session的序列化、反序列化以及钝化、活化

序列化: 把session持久化到硬盘中(比如服务器关闭时)

反序列化: 当服务器重启的时候,还原原来的session,内存中的session被销毁

钝化: 所谓钝化session,就是把session通过序列化的方式保存到硬盘文件中。
当服务器正常关闭时,还存活着的session(在设置时间内没有销毁) 会随着服务器的关闭被以文件(“SESSIONS.ser”)的形式存储在tomcat 的work 目录下,这个过程叫做Session 的钝化

活化: 所谓活化就是把硬盘文件中的session在反序列化回内存
当服务器再次正常开启时,服务器会找到之前的“SESSIONS.ser” 文件,从中恢复之前保存起来的Session 对象,这个过程叫做Session的活化

因为钝化和活化session,其实就是使用序列化和反序列化技术把session从内存保存到硬盘,和把session从硬盘加载到内存。这说明如果对象没有实现Serializable接口,那么当session钝化时就不会钝化对象,而是把对象从session中移除再钝化!这也说明session活化后,session中就不在有对象了

cookie与session区别

都是用来跟踪浏览器用户身份的会话方式

Cookie:

存储在客户端,

只能存储4k的String字符串,

不是很安全,可以分析本地cookie,并进行cookie欺骗

由创建它的应用获得 ,只能跨域共享

Session:

存储在服务器

能存储任意大小的Object对象

相对比较安全,但当访问量过多,或占用服务器性能

域里的数据内容私有

session依赖Cookie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值