Session的基本使用

一、Session原理

1、Session是服务端会话跟踪技术,将数据保存到服务端,相对于cookie把数据存储到客户端浏览器里更加的安全。

2、Session是JavaEE提供的一个HttpSession接口,来实现一次会话的多次请求间数据共享功能

3.在一次会话中多次请求之间使用的是同一个Session对象,原理:其实原理是基于Cookie的

为了能让浏览器识别不同会话获取的Session对象是不同的,我们通过demo1第一次获取session的时候,这个时候我们获取出来的session对象是带有唯一标识id的,假设这个id是1,并且这个demo1里面存了一些数据,我们存完数据之后后续是没有代码了,这个时候tomcat要给对应的客户端浏览器做出响应,这个时候tomcat发现是session后会自动的把session的id当作一个cookie发送给客户端浏览器,所以tomcat会在响应的时候加上一个set-cookie当作响应头 ,对应的值就是session的id=1,客户端收到这个set-cookie响应头之后会自动的把session存到客户端浏览器里的内存中,在下一次浏览器访问demo2时会带着这个id = 1的cookie信息并携带对应的数据,携带了之后将来我们在demo2里面获取session对象的时候,发现这次请求人家携带了一个cookie头,里面的id=1, 然后就会在内存中寻找id=1的session,如果内存中没有id=1的session那么就会自己创建一个,如果有就会直接拿来用。不同会话获取的session对象id是不同的所以能保证获取的数据不同,而相同的会话获取的session对象id相同所以能保证获取的数据相同。

二、使用方法:

①获取Session对象,用request.getSession()方法获取。

HttpSession session = request.getSession();

②获取了Session对象后,Session对象里面就有一些对应的功能

有session.setAttribute("键","值");可以用来存储数据,而且这个方法里接收的值不仅限于字符串,它可以是Object任意类型如下图是setAttribute方法可传入的参数

 session.setAttribute("username","badou");

存储完数据后可在另一个servlet中用request.getAttritube()方法得到Session中存储的数据

                HttpSession session = request.getSession();
                Object attribute = session.getAttribute();

最后还有一个removeAttritube()方法可以用来删除存储的键值对

HttpSession session = request.getSession();
session.removeAttribute();

三、Session的使用细节

问题1:在服务器重启之后,Session中的数据是否存在?

答:存在,因为在服务器正常关闭之后,tomcat会自动把session数据写入到硬盘文件里(Session钝化),再次启动服务器后又会从文件中加载数据到session中(Session活化)

问题2:当浏览器访问服务器1时,我关闭浏览器然后再打开浏览器,再访问服务器1,期间使用的Session是同一个吗?

答:不是,当你关闭浏览器之再开启浏览器访问时就不是同一次会话了,使用的不是同一个Session,所以Session地址也会不一样,所以session不能长期的的携带数据

默认情况下无操作,30分钟之后session自动销毁,若要修改存活时间可以再web.xml文件中修改,具体代码如下(单位是分钟)

    <session-config>
           <session-timeout>1</session-timeout>
       </session-config>

还可以调用session对象的invalidate()方法销毁session对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钜锋王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值