会话概述
会话
浏览器与服务器的一次连续的谈话.
具体描述
从用户打开浏览器访问服务器时,一次会话开始.
在这次会话中,浏览器与服务器可以进行任意次的请求响应.
当用户关闭浏览器窗口的时候,本次会话结束.
会话技术作用
会话技术用来存储浏览器与服务器在会话过程中产生的数据.
两种会话技术
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
本文深入探讨了会话管理技术,包括Cookie和Session的工作原理、常用方法及它们的区别。讲解了如何利用这两种技术来跟踪用户身份,保持会话状态,以及它们在安全性、存储位置和生命周期管理上的差异。
4107

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



