当前位置: 首页 > news >正文

【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爱好者指正,小弟定当虚心受教!

相关文章:

【Java Web】会话管理

目录 一、为什么需要会话管理? 二、会话管理机制 三、Cookie概述 四、HttpSession概述 4.1 HttpSession时效性 一、为什么需要会话管理? HTTP协议在设计之初就是无状态的,所谓无状态就是在浏览器和服务器之间的通信过程中,服务器并…...

RestTemplate修改默认转换器,使用FastJsonConverter

问题描述: 在使用RestTemplate发送POST请求时,发现发送的数据并未按配置的JSONField转换,导致服务方一直收不到参数 排查过程: 将itemList改成Items传输即可 原因分析: RestTemplate有默认的转换器,所以…...

什么是div移动指令?如何用vue自定义指令实现?

目录 一、Vue.js框架介绍二、vue自定义指令directive三、什么是div移动指令四、使用vue自定义指令directive写一个div移动指令 一、Vue.js框架介绍 Vue.js是一个用于构建用户界面的渐进式JavaScript框架。它设计得非常灵活,可以轻松地被集成到现有的项目中&#xf…...

Golang | Leetcode Golang题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; const L 10 var bin map[byte]int{A: 0, C: 1, G: 2, T: 3}func findRepeatedDnaSequences(s string) (ans []string) {n : len(s)if n < L {return}x : 0for _, ch : range s[:L-1] {x x<<2 | bin[byte(ch)]}cnt : map[int]in…...

智能猫砂盆到底是不是智商税?解救上班族双手的测评合集来了

不得不说&#xff0c;像我这样的上班族真的是很需要一个智能猫砂盆了。普通的猫砂盆一天就要打扫3次&#xff0c;遇到很能拉的猫咪的时候&#xff0c;就不止是三次那么简单了。如果有个产品能帮我解决这个问题&#xff0c;让我能放心外出&#xff0c;那又何乐而不为呢&#xff…...

java 数据新增、更新、删除监听,并记录日志或其他业务

数据新增、更新、删除监听&#xff0c;并记录日志或其他业务 1.使用场景 日志记录、KPI考核&#xff08;业务进行到某个阶段&#xff0c;对人员的考核&#xff09;等等 实体监听器 实体增加注解 EntityListeners({KpiOrderCounter.class}) /*** 订单管理考核** author sul…...

developer.android.com在国内无法正常访问解决方法

将android.com替换为android.google.cn...

大学物理(下)笔记

摘录来自笔记网站的笔记。笔记网站详见https://onford.github.io/Notes/。 大学物理&#xff08;下&#xff09;笔记 部分常用物理常量的计算值 C h a p t e r 9 Chapter9 Chapter9 恒定磁场 毕奥-萨伐尔定律 磁场和电场在很多性质上是有共性的&#xff0c;很多时候可以拿它…...

Mind+在线图形编程软件(Sractch类软件)

Scratch作为图形编程软件&#xff0c;可以为小朋友学习编程提供很好的入门&#xff0c;是初次接触编程的小朋友的首选开发软件。这里介绍的Mind软件与Sractch用法几乎完全一致&#xff0c;并且可以提供在线免安装版本使用&#xff0c;浏览器直接打开网址&#xff1a; ide.mindp…...

数智化招采供应链平台七大优点

在当今快速发展的商业环境中&#xff0c;技术更新风起云涌、数字化转型不断加快&#xff0c;产业链供应链竞争日趋激烈。企业必须不断提升产业链供应链现代化水平&#xff0c;建设畅通、韧性、竞争力强的产业链供应链&#xff0c;因此招采供应链平台的需求日益迫切。 为满足企…...

Java面试题:对比HTTP的GET和POST方法,并讨论它们的使用场景

HTTP的GET和POST方法是用于在客户端和服务器之间交换数据的两种基本请求方法。它们有不同的特性和使用场景。 GET方法 特性 数据在URL中传输&#xff1a;GET请求的数据附加在URL的末尾&#xff0c;通过查询字符串传输。数据长度限制&#xff1a;由于浏览器和服务器对URL长度…...

webpack+webpack server入门

​ 1.webpack介绍 webpack是一个模块加载器兼打包工具。它是以 commonJS 的形式来书写脚本的&#xff0c;但对 AMD/CMD 的支持也很全面&#xff0c;方便旧项目进行代码迁移。支持对react热插拔。 2.安装&#xff08;使用淘宝镜像&#xff09; 全局安装 cnpm install webpa…...

Java内存模型以及多线程并发深度剖析

文章目录 Java内存模型JMM的基本概念缓存一致性与处理器优化happens-before原则总结主内存以及cpu的多级缓存模型的实现原理主内存(Main Memory)CPU多级缓存模型实现原理:多线程并发运行时可能引发的数据不一致问题总线加锁机制和MESI缓存一致性协议的工作原理总线加锁机制M…...

【JS问题】require相对路径引入模块

潜在问题 安全性问题&#xff1a;使用相对路径来引入模块可能会带来安全隐患&#xff0c;尤其是如果这段代码运行在客户端&#xff08;比如Node.js的Electron框架&#xff09;且相对路径可以被用户控制的情况下。恶意用户可能会尝试修改路径来访问不应该被访问的文件。 模块路…...

SAP ABAP 常用实用类

文章目录 前言一、输出 展示 数据信息 a.将 JSON 格式化为可读 并以弹框形式输出 b.将内表内容以表格形式输出 c.弹框形式显示 HTML 内容。也能显示包含js 的html。也可以显示pdf 图片 二、输入 获取 数据信息 a.弹框 添加 输入框…...

笔记本电脑录屏,教你3个方法,简单录屏

随着科技的飞速发展&#xff0c;笔记本电脑录屏功能已经不再局限于传统的录制需求&#xff0c;而是成为了探索屏幕动态的新方式。无论是创意工作者、游戏爱好者还是日常办公者&#xff0c;都可以借助这一功能&#xff0c;将屏幕上的精彩瞬间、重要信息或创新思路记录下来&#…...

A-8 项目开源 qt1.0

A-8 2024/6/26 项目开源 由于大家有相关的需求&#xff0c;就创建一个项目来放置相关的代码和项目 欢迎交流&#xff0c;QQ&#xff1a;963385291 介绍 利用opencascade和vulkanscene实现stp模型的查看器打算公布好几个版本的代码放在不同的分支下&#xff0c;用qt实现&am…...

CNC数控机床如何通过工业智能网关实现远程运维?天拓四方

随着工业4.0时代的来临&#xff0c;智能制造成为制造业转型升级的关键。CNC数控机床作为制造业的核心设备之一&#xff0c;其智能化、远程化的运维管理显得尤为重要。工业智能网关作为一种连接物理世界与数字世界的桥梁&#xff0c;为CNC数控机床的远程运维提供了强大的技术支撑…...

PMP培训,哪个机构的通过率高?

有很多培训机构供选择&#xff0c;但要找到适合自己的却很困难。特别是随着PMP参考教材的更新&#xff0c;考试难度增加了&#xff0c;仅靠自学很难与报班的同学竞争。那么在众多PMP培训机构中如何选择最适合自己的呢&#xff1f;有哪些机构是可信赖的呢&#xff1f;下面将介绍…...

贷款承诺状态映射参数表,用于加工的提示信息

在设计贷款承诺状态映射参数表时&#xff0c;目的是将贷款的不同状态映射为相应的提示信息&#xff0c;以便于系统能够自动生成和发送通知给相关的借款人或银行员工。以下是一个简化的参数表示例&#xff0c;用于指导贷款状态的加工和提示信息生成&#xff1a; | 状态代码 |…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...