【Java Web】会话管理

目录

一、为什么需要会话管理?

二、会话管理机制

三、Cookie概述

四、HttpSession概述

4.1 HttpSession时效性


一、为什么需要会话管理?

HTTP协议在设计之初就是无状态的,所谓无状态就是在浏览器和服务器之间的通信过程中,服务器并不会保存记录客户端的一些信息。由于HTTP是无状态的、这样服务器在收到多个用户浏览器发送过来的请求报文时,就无法知道他们分别来自那个用户,这样就导致服务器无法对特定的用户请求做特定的处理。而会话管理的出现(session和cookie)就很好的解决了此问题。

二、会话管理机制

①用户浏览器向服务端发送一次请求;服务端收到用户的请求报文后,根据cookie请求头中保存的会话ID来查找Tomcat服务中对应的session对象,并根据session对象中记录的客户端信息对其用户的请求做相应的处理。

由于客户端是首次访问服务端站点,其发送的请求报文中不会携带cookie。于是服务端在收到请求报文后会为此用户专门创建一个session对象来记录该客户端的一些状态信息。并将该session对象ID放在响应头的cookie中,响应给客户端(session对象就像一个记事本、此记事本专门记录一个客户端的状态信息)。

②客户端浏览器收到响应报文后会将服务端响应的cookie信息保存到浏览器(默认)内存或本地磁盘里;以后客户端每次访问该服务器只要本地保存的cookie还存在,就会在请求报文中携带此cookie发送给服务端。

③Tomcat服务收到用户发送过来的请求报文后,会根据其携带的cookie中的会话ID,来找到之前对应的、记录着客户端状态信息的session对象。这样服务端就可以根据session对象中记录的用户的信息来做相应的逻辑处理并做出响应。

注意:

②服务端根据用户请求头cookie的SessionID,如果没有找到之前的Session对象则会生成一个新的Session对象来使用并将其会话ID放在cookie中响应给用户浏览器。

③默认情况下,Tomcat服务的Session对象的空闲时间也就是超时不活跃时间为30分钟,如果在这30分钟内都没有使用该会话对象,则此对象就会被删除。

三、Cookie概述

Cookie是由服务端产生的,用于存储一小份数据到用户浏览器。以后用户每次请求服务器时都会携带这一小份数据到服务端。

代码测试:

说明:

①cookie默认保存在浏览器所使用的内存中,浏览器关闭或清除浏览器缓存都会导致cookie的删除(会话级Cookie)。服务端也可以通过代码设置响应给客户端的cookie保存到客户端本地的磁盘中做持久化存储即设置保存到客户端的Cookie的生存时间。

②浏览器在访问服务端项目下的任何资源时,默认都会携带Cookie;可以在服务端通过Cookie的setPath(String)方法设置某个Cookie只在访问服务端项目下的特定资源时会被携带浏览器的请求报文中。

 

四、HttpSession概述

HttpSession是位于服务端的一个会话对象,类似于一个记事本专门用来记录客户端的一些信息,服务端会为每个客户端生成一个session对象,对象中可以用来存储键值对类型的数据。每个Session对象都有一个对应的JSessionID,服务端会根据用户请求报文Cookie中携带的JSessionID找到之前的为此客户端创建的seesion对象记事本,从而可以获取之前于客户端交互而记录下来的一些信息。

代码测试:

4.1 HttpSession时效性

默认情况下HttpSession对象的最大生存时间也称为最大不活跃间隔时间是30分钟。如果超过30分钟此session对象都没使用,则Tomcat服务会将其session对象回收释放;如果使用了则会重新对session对象进行计时即刷新计时器。

设置Session对象生存时间的两种方式:

  • web.xml方式:

  • HttpSession对象的API方式:

        //设置最大闲置时间

        session.setMaxInactiveInterval(60);

        //直接让session失效

        session.invalidate();

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/36173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分类分级分几步?“6步分解”一目了然!

数据分类分级是企业开展数据安全治理的第一步。通过数据分类分级对数据资产进行盘点,及时掌握内部数据情况,有针对性的对各类型数据采取安全防护措施,为后续企业数据资产管理和数据安全体系建设起到关键作用。 同时,随着《中华人民…

PVE 8.2.2安装OpenWrt 23.05.3

1,下载官方openwrt 23.5.3镜像并解压 2,进入pve上传镜像 复制这段文字之后需要使用 创建虚拟机 删除磁盘 安装完毕后 shell 运行 qm importdisk 100 /var/lib/vz/template/iso/openwrt-23.05.3-x86-64-generic-ext4-combined-efi.img local-lvm 其中100是虚拟…

C++ 参数传递方式有哪些?它们有什么区别【面试】

传递方式 在C中,参数的传递方式主要有以下几种: 按值传递(Pass by Value): 将实参的值复制给形参,函数内对形参的操作不会影响实参的值。适用于基本数据类型和小型结构体,因为复制开销较小。 按…

Java中反射的应用举例

一、技术难点 Java反射(Reflection)是Java语言提供的一种强大工具,它允许程序在运行时进行自我检查和修改。然而,反射也带来了一些技术难点: 性能问题:反射涉及到了动态类型解析和代码生成,相…

想学gis开发,java和c++那个比较好?

ava与C的应用场景不同,究竟选择谁,应该由开发者的兴趣方向来决定。 你选择Java,意味着以后的业务方向就是偏后台服务开发,如果你非得说我用java也可以写界面,对不起,别人不会。 刚好我有一些资料&#xf…

AudioLM深度解析:革新音频生成的未来

在人工智能领域,自然语言处理(NLP)的突破性进展已经催生了多种语言模型,如GPT系列和BERT。这些模型在文本生成、翻译和理解方面取得了巨大成功。随着技术的发展,类似的模型也被应用于音频领域,其中AudioLM便…

光电液位传感器工作时容易受哪些因素影响?

光电式水位传感器的检测液位时是必须要接触液体才能进行检测的。当液体覆盖光电式水位传感器的探头时,传感器内的发光二极管发射出去的光线会折射在液体中,而光敏接收器只能接收到少量光电或者接收不到光线。反之正常接收光线则是无水状态。 光电式水位…

使用前缀积求最后K个数的乘积

前缀积解题基本思路: 1.首先创建整型集合,添加元素1(任何整数乘以1都等于整数本身)。 2.将与新元素的乘积依次添加到整型集合中,再根据相应的索引值进行除法操作,从而获取最后K个数的乘积。 3.&#xff…

腾讯云对象存储cors错误处理

最近将公司的域名进行了修改,同时将腾讯云的对象存储改成了https,为了安全嘛。然后上传软件包的时候发现上传软件就失败了。 在浏览器中打开该 HTML 文件,单击 Test CORS 发送请求后,出现以下错误,错误提示&#xff1…

单点登录系统8大原理机制详解

单点登录系统详解(8大原理机制图解) 单点登录 单点登录(SSO)实现一处登录,全平台畅通。用户只需登录一次,即可无缝访问多个互信的应用系统,高效便捷,省时省心。 举例来说,阿里旗下拥有多款热门…

Java面试题:解释常见的HTTP状态码及其含义

HTTP状态码是由服务器返回给客户端的三位数字,用于表示HTTP请求的结果状态。以下是一些常见的HTTP状态码及其含义: 1xx: 信息响应 102 Processing (WebDAV):表示服务器已收到并正在处理请求,但尚未有响应可用。 2xx: 成功 203…

Jackson序列化时实现任意类型自定义转换

自定义Jackson2序列化反序列化,参考: Jackson序列化时实现任意类型自定义转换_jackson 自定义转换-CSDN博客

Spring Boot中的会话管理

Spring Boot中的会话管理 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来聊聊Spring Boot中的会话管理。会话管理是Web应用中非常重要的一部分&#…

策略模式(Strategy Pattern)

策略模式 (Strategy Pattern) 定义 它是将定义的算法家族、分别封装起来,让它们之间可以相互替换,从而让算法的变化不会影响到使用算法的用户。 可以避免多重分支的 if-else、switch语句。 属于行为型模式。 适用场景 如果系…

现货黄金如何操作:黄金技术性止损的运用

止损是现货黄金如何操作中不得不提及的方法。在现货黄金投资过程中,风险是存在的,重要的是如何将风险把控好。这里的一个重要概念就是,要对每一笔交易设定好止损,可以讲,这就是现货黄金如何操作的方法中最重要的一种。…

如何降低MCU系统功耗?

大家在做MCU系统开发的时候,是否也碰到过降低MCU系统功耗的需求? MCU系统整板功耗是个综合的数据,包括MCU功耗以及外部器件功耗,在此我们主要介绍如何降低MCU的功耗: 可以在满足应用的前提下,降低MCU的运…

单片机里面中断状态寄存器是什么

中断状态寄存器是存在于许多微控制器和硬件设备中的一个特殊类型的寄存器,用于指示发生了哪些中断事件。当中断发生时,相应的中断状态寄存器中的一个或多个位会被硬件设置为1。软件可以通过读取这个寄存器来确定哪些中断需要处理,并通过写回特…

top和ps的cpu区别

CPU使用率计算方式: top 命令计算的是在固定时间间隔内,每个进程占用CPU的时间百分比,因此它能反映进程的实时CPU使用情况。top 中的CPU使用率之和可能超过100%,因为在多核系统中,每个核心的使用率可以单独计算&#…

合约期VS优惠期,搞明白他们的区别才能避免很多坑!

在购买流量卡时,相信大家也都发现了,市面上的不少套餐都是有合约期和优惠期的,尤其是联通和移动,那么,什么是合约期?什么又是优惠期呢? ​ 其实,目前很多在网上办理的大流量卡都是有…

PHP的最新版本是什么?它引入了哪些新特性?

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言,主要用于服务器端编程。它在服务器上执行,能够生成动态页面内容、处理表单数据、发…