会话跟踪技术

会话技术

在日常生活中,拨通电话到挂断电话之间的你问我答的过程就是会话

浏览器Web服务器之间连续发生请求-响应过程就是会话

直到一方断开,会话结束

        Http是一个无状态协议,不会记录每次请求的状态,这就造成了同一个会话两请求之间相互独立,彼此没有联系,以后解决引出以下知识Cookie和Session

Cookie客户端(浏览器)会话跟踪技术

        创建一个 Cookie,即由 Servlet 发送到 Web 浏览器的少量信息,由浏览器保存,然后发送回服务器。Cookie 的值可以唯一地标识客户端,因此 Cookie 通常用于会话管理。(翻译官方介绍)


Cookie基本使用

        将数据保存到客户端,以后每次请求都携带Cookie数据进行访问

发送Cookie:

        ①创建Cookie对象,设置数据

Cookie cookie = new Cookie("key","value");

        ②发送Cookie到客户端:使用response对象

response.addCookie(cookie);

获取Cookie:

        ③获取客户端携带的所有Cookie,使用request对象

Cookie[] cookies = request.getCookies();

        ④遍历Cookie数组,获取对象(for)

        ⑤使用Cookie对象方法获取数据

cookie.getName();
cookie.getValue();

Cookie原理

基于HTTP协议:响应头set-cookie 请求头cookie


Cookie使用细节

存活时间:

        默认情况下,Cookie存储在浏览器内存中,当关闭浏览器,内存释放,Cookie被销毁

setMaxAge(int seconds) 设置Cookie存活时间

        1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储,到时自动删除

        2.负数:默认值,Cookie在挡墙浏览器内存中,当浏览器关闭,则Cookie被销毁

        3.零:    立即删除对应的Cookie

存储中文:

        不能之间存储中文,转UTF-8

request.setCharacterEncoding("UTF-8");

Session服务端(服务器)会话跟踪技术

        会话对象是用于生成和使用消息的单线程上下文。虽然它可以在Java虚拟机(JVM)之外分配提供程序资源,但它被认为是一个轻量级JMS对象。(翻译官方介绍)


Session使用

        将数据保存到服务器,HttpSession接口,实现多次请求数据共享功能

        ①获取Session对象

HttpSession session = request.getSession();

        ②Session对象功能

        void setAttribute(String name,Object obj) 存储数据到session域中

        Object getAttribute(String name) 根据key,获取值

        void removeAttribute(String name) 根据key,删除该键值对


Session原理

        基于Cookie实现的


Session使用细节

Session钝化,活化

        钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中

        活化:再次启动服务器后,从文件中加载数据到Session中

Session销毁

        默认情况下,无操作,30分钟自动销毁

<session-config>
    <session-timeout>30</session-timeout>
</session-config>>

        调用Session对象的invalidate()方法 

总结

        Cookie 和Session 都是来完成一次会话内多次请求间数据共享的

区别:

        存储位置:Cookie是将数据存储在客户端, Session将数据存储在服务端

        安全性:Cookie不安全, Session安全

        数据大小:Cookie最大3KB, Session无大小限制

        存储时间:Cookie可以长期存储, Session默认30分钟

        服务器性能:Cookie不占服务器资源, Session占用服务器资源

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值