小白之旅28

Session

一. 概念和实现步骤

服务器端的会话技术,能在一次会话接收多次请求并作出多次响应,并且这些请求响应的数据是共享的。

实现步骤:

1、获取Session对象

​ HttpSession session = request.getSession()

2、使用Session对象

​ session.setAttribute(String , Object)

​ session.getAttribute(String)

​ session.removeAttribute(String)

二. Session的原理

Session的实现的基于Cookie的

1、当使用request对象调用getSession来获取Session对象时,

​ 先对请求头中的cookie进行的判断是否有JSESSIONID,并且这个id有与之匹配的Session对象在服务器中,

​ 如果没有,则创建一个Session对象给调用者;

​ 如果有,则将已有Session对象赋值给调用者来获取Session。

2、当Session对象获取后,会将这个Session对象的id作为值,将"JSESSIONID"作为键,放在Cookie对象中,再将此Cookie对象放到响应头的set-cookie中

3、当客户端下次再请求同一站点时,会将得到的 JSESSIONID=id值 放在请求头的cookie中,此时服务器会将内存中已有的 Session对象的id 与传递过来的 id值 进行比较

4、如果客户端关闭过,由于JSESSIONID所在的Cookie是会话级别的(浏览器关闭就释放),那么这个JSESSIONID就会被释放,从而就没有与服务器中的Session对象的id值进行匹配的

​ JSESSIONID值,此时就无法获取存储在Session域对象中的数据

如果想要在客户端关闭后仍然可以获取Session域中的数据,解决办法:将JSESSIONID持久化

1、获取Session对象的id值

2、将这个id值作为值,将"JSESSIONID"作为键,放在Cookie对象中

3、使这个Cookie对象持久化

三. Session的失效时间

  • 默认情况下是 tomcat->conf->web.xml中描述的30分钟

    <session-config>
    
    ​ <session-timeout>30</session-timeout>
    
    </session-config>
  • 在当前项目中的web.xml中自定义失效时间

    <session-config>
    
    ​ <session-timeout>minutes</session-timeout>
    
    </session-config>
  • 钝化、活化

    • 钝化:在服务器正常关闭时,会将session对象序列化到tomcat->work下
    • 活化:在服务器开启后,会将session文件读取到内存中
  • 调用session的invalidate():自杀

四. Session的特点

1、session存储数据的大小没有限制

2、sesion中可以存储一次会话的多次请求的数据,放到服务器中

五. Session与Cookie的区别

1、Session在服务器中,Cookie在客户端中

2、Session没有数据大小的限制,Cookie有

3、Session是域对象,可以在多次请求中获取域对象中的数据

4、Session相对安全,Cookie相对不安全

转载于:https://www.cnblogs.com/demonycw/p/11342770.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值