#会话技术是啥?
会话:一次会话中包含多次请求和相应。一次会话,就是浏览器(同一个浏览器)第一次给服务器资源发送请求,会话建立 ,直到有一方断开为止
功能:在一次会话的范围内的多次请求之间 共享数据
Cookie技术
1.实现原理:是基于http协议中响应头set-cookie和请求头cookie实现
2.关于cookie的持久化存储:
- setMaxAge(int seconds)
seconds的取值状况:
1. 正数:将Cookie数据写到硬盘的文件中。持久化存储。seconds还代表了指定cookie存活时间,时间到后,cookie文件自动失效
2. 负数:默认值
3. 零:删除cookie信息
3.cookie(获取范围有多大)共享问题
1 . 假设在一个tomcat服务器中,部署了多个web项目,那么在这些web项目中cookie能不能共享?
* 默认情况下cookie不能共享
* setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录 如果要共享,则可以将path设置为"/"
2.不同的tomcat服务器间cookie共享问题?(分布式部署 域名的映射)
* setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享
4.关于cookie的特点 作用- cookie存储数据在客户端浏览器(不安全 容易篡改)
- 浏览器对于单个cookie 的大小有限制(一般4kb) 以及 对同一个域名下的总cookie数量也有限制(一般120个)
- 作用:
1. cookie一般用于存出少量的不太敏感的数据
2. 在不登录的情况下,完成服务器对客户端的身份识别
Session技术
1、实现原理: Session的实现是依赖于Cookie的。
解释:
第一次获取Session,没有cookie 会在内存中创建一个新的session对象(地址) 发送一个响应头 set-cookie :JSEEIONID(地址值)
第二次请求通过cookie头携带JSEEIONID 服务器会去自动获取这个信息,然后去找这个JSEEIONID的session的对象
** 2、客户端不关闭,服务器关闭后,两次获取的session是同一个吗?**
由于服务器关闭内存被释放了 两次session的地址值很难一样 分配的地址值很难一样,因此不是同一个,但是要确保数据不丢失。tomcat自动完成session的钝化,与活化
session的钝化:在服务器正常关闭之前,将session 对象系列化(csdn) 到硬盘上
session的活化:(反序列化)在服务器启动后,将session文件转化为内存中的session对象即可。
注意:
1、IDEA会升生成钝化 但是重启服务器 work目录会被自动删除
2、反序列化 tomcat帮我们做了 自己将项目项目放到服务器上 idea上并不会自动帮我们操作
3、session什么时候被销毁?
1.服务器关闭
2. session对象调用invalidate() 。自销毁
3. session默认失效时间 30分钟
<session-config> <session-timeout>30</session-timeout> </session-config>
session与Cookie的区别
5. session存储数据在服务器端,Cookie在客户端
6. session没有数据大小限制,Cookie有
7. session数据安全,Cookie相对于不安全