【转载】会话管理

发布时间:2026/8/12 19:40:09

【转载】会话管理
一、会话管理的概念和基本原理一为什么进行会话管理Web应用程序基于HTTP协议HTTP基于请求/响应模式– 所有请求都是相互独立的无连续性的HTTP是无连接的协议– 限制每次连接只处理一个请求HTTP是无状态的协议– 协议对于事务处理没有记忆能力二会话管理的产生对于简单的页面浏览或信息获取HTTP协议即可胜任– 浏览资讯– 查看在线图书目录对于需要客户端和服务器端多次交互的网络应用则必须记住客户端状态– 网上的购物车– 用户登录三会话管理概念会话就是一个客户端连续不断地和服务器端进行请求/响应的一系列交互。多次请求间建立关联的方式称为会话管理或会话跟踪。会话状态指服务器与浏览器在会话过程中产生的状态信息。四会话的实现过程HTTP没有提供任何记住客户端的途径服务器如何建立、维护与客户端的会话当服务器接收到客户端的首次请求时服务器初始化 一个会话并分配给该会话一个唯一标识符。在以后的请求中客户端必须将唯一标识符包含在请求中服务器根据此标识符将请求与对应的会话联系起来。二、使用Cookie、隐藏域、URL重写实现会话管理一会话管理使用Cookie所有的HTTP消息不管是请求还是响应均包含头信息。当服务器返回响应给客户端时Servlet容器把会话的信息添加到响应头信息中。客户端浏览器接收到响应后提取头信息并将其存储在本地机中以后发送请求时会自动将该信息带回服务器端。浏览器存储在客户端机器上的头信息称作Cookie它以“属性名属性值; …”方式组成文本信息。1. 示例使用Cookie实现用户登录2. 创建并向客户端发送Cookie创建Cookie对象调用Cookie的构造方法给出Cookie的名称和Cookie的值二者都是字符串Cookie cnewCookie(userName,a1234)设置最大时效如果要告诉浏览器将Cookie存储到磁盘上而非仅保存在内存中使用setMaxAge方法(参数为秒数)c.setMaxAge(60*60*24*7)//一周(正数)将Cookie放入到HTTP响应中使用response.addCookie(c)如没有这一步将不会有任何Cookie被发送到浏览器3. 从客户端读取Cookie调用request.getCookies得到Cookie对象组成的数组循环数组调用每个对象的getName找到想要的cookie根据应用程序调用getValue方法使用这个CookieCookie[]cookiesrequest.getCookies();if(cookies!null){for(Cookie cookie:cookies){if(userId.equals(cookie.getName())){//doSomethingWith(cookie.getValue());}}}4. Cookie的方法函数功能补充说明getMaxAge()读取Cookie到期时间(秒)- 如果值为0表示删除对应的Cookie- 如果值为负数表示Cookie只适用于当前的浏览会话- 默认值为-1setMaxAge()设置Cookie到期时间(秒)-getName()读取Cookie的名称不存在setName() 方法getValue()读取与Cookie关联的值-setValue()设置与Cookie关联的值如果重新设置了某Cookie的值需要用addCookie()方法将其发送回去5. Cookie的优缺点优点– 可配置到期规则数据可持久保存–不需要服务器资源数据保存在客户端– 简单性基于文本的Key-Value对缺点– 大小受到限制(总数300;20/站点;4KB/Cookie)–用户可禁用客户端接收Cookie的功能– 潜在的安全风险二会话管理使用隐藏的表单域思想通过使用隐藏域由浏览器主动告知服务器多次请求间必要的信息如在线问卷作答优点Cookie被禁用或者根本不支持的情况下依旧能够工作缺点–关掉网页后会遗失先前的请求信息– 所有的页面必须是表单提交之后的结果三会话管理使用URL重写思想– 当服务器响应浏览器上一次请求时将某些相关信息以超链接方式响应给浏览器超链接中包括请求参数信息– 由于GET方式发送请求通常URL重写用于简单客户端信息保留或辅助Session会话管理三、Session会话管理的原理和技术实现一Session在Servlet中进行会话管理可以使用HttpServletRequest的getSession()方法取得HttpSession对象(简称为Session)通过设置/获取服务器端Session对象的属性来保留请求之间的相关信息。Servlet容器提供Session接口来代表服务器端和客户端的会话。当一个WEB服务器为客户端开始一个会话时创建一个新的Session对象(含有特殊ID称为Session ID默认用Cookie存放在浏览器中。在Tomcat中Cookie的名称为JSESSIONID)。Session将数据存储在服务器的内存中供以后来自同一个客户端的请求使用。二示例使用Session实现用户登录三使用Session对象通常分三个步骤获取一个与请求相关联的会话HttpSession session request.getSession();从Session中设置或获取一个属性–session.setAttribute(“userName”,userName);–session.getAttribute(“userName”);根据需要关闭会话–session.invalidate();–通常客户端不提供结束会话的通知而是Servlet容器在用户处于一段非活动期后就会自动的使会话失效——这个时间段称为会话的超时期。四会话失效Session对象失效当用户超出指定会话期时间处于非活动状态时会话自动结束。– setMaxInactiveInterval()设置会话的超时期– 通过web.xml的 session-timeout标签设置– 使用方法invalidate()Cookie失效– 默认关闭浏览器Cookie消失– 在web.xml中设定存储Session ID的Cookie存活期限五Session与URL重写当用户浏览器禁用Cookie时仍打算运用Session来进行会话管理可以对所有的URL使用URL重写。六Session的方法方法功能getAttribute()从会话对象中提取出一个之前存储的属性值。如果没有找到与名称相关联的值则返回nullsetAttribute()设置会话对象的属性名称和属性值removeAttribute()移除与名称关联的值getAttributeNames()返回会话中所有属性的名称getId()返回唯一的标识符isNew()确定会话对于客户来说是否为新创建getCreationTime()返回会话创建的时间getLastAccessedTime()返回客户端最近一次发送请求的时间getMaxInactiveInterval()取得会话的超时期setMaxInactiveInterval()设置会话的超时期invalidate()废弃当前的会话

相关新闻

Unity热更新方案深度对比:HybridCLR与ILRuntime的性能、原理与选型指南

Unity热更新方案深度对比:HybridCLR与ILRuntime的性能、原理与选型指南

2026/8/12 19:40:09

1. 项目概述:Unity热更新方案的选择困境在Unity项目开发的中后期,尤其是上线运营阶段,“热更新”几乎是一个绕不开的话题。无论是修复线上紧急Bug,还是快速迭代新功能,绕过应用商店漫长的审核流程,直接向用…

深入解析Objective-C Block的本质与内存管理

深入解析Objective-C Block的本质与内存管理

2026/8/12 19:40:09

1. Block的本质:从语法糖到运行时对象 第一次看到Block语法时,很多人会误以为它只是Objective-C的一种特殊语法。实际上,Block是苹果在LLVM编译器和运行时层面实现的完整对象体系。通过clang重写命令可以看到,一个简单的Block声明…

Arduino IDE驱动ATTINY13A:从硬件连接到低功耗编程全攻略

Arduino IDE驱动ATTINY13A:从硬件连接到低功耗编程全攻略

2026/8/12 19:30:09

1. 为什么选择ATTINY13?从“玩具”到“利器”的认知转变 提到用Arduino IDE给单片机编程,大家第一时间想到的肯定是Arduino Uno、Nano这些经典开发板。但今天我想聊点不一样的:如何用我们熟悉的Arduino IDE,去驱动一颗只有8个引脚…

SAP Commerce促销引擎二十年演进:从硬编码到Drools与云原生智能化

SAP Commerce促销引擎二十年演进:从硬编码到Drools与云原生智能化

2026/8/12 20:40:12

1. 项目概述:一张优惠券背后的技术变迁最近在整理团队的历史项目文档,翻到一张十几年前的优惠券设计稿,纸张都有些泛黄了。这让我突然意识到,自己参与和见证企业级电商促销系统演进,已经快二十年了。从最初简单粗暴的“…

如何用Claude生成word文档——AI导出鸭评测

如何用Claude生成word文档——AI导出鸭评测

2026/8/12 20:40:12

如何用Claude生成word文档——AI导出鸭眼评测 痛点驱动:当AI输出遭遇格式崩坏 作为长期处理多模态数据流的技术架构师,我见过太多“高智商、低格式”的AI导出悲剧。Claude生成的Markdown、LaTeX公式、嵌套列表,一旦复制到Word,立刻…

文心生成的表格怎么复制下来?AI导出鸭实测:4种方案横向对比

文心生成的表格怎么复制下来?AI导出鸭实测:4种方案横向对比

2026/8/12 20:40:12

文心生成的表格怎么复制下来?AI导出鸭实测:4种方案横向对比文心一言输出的表格一粘贴就散架?公式变乱码?这不是你一个人的问题。本文从工程视角拆解四种复制方案,告诉你为什么“AI导出鸭”是最优解。一、痛点&#xff…

Modbus 转 IEC 104:6 个容易被低估的工程细节

Modbus 转 IEC 104:6 个容易被低估的工程细节

2026/8/12 20:40:12

光储电站接入电网调度时,绝大多数项目都要做一件事:把现场设备的 Modbus 数据,转成 IEC 104(DL/T 634.5104)上送调度厅。 听上去就是「协议转换」——把 Modbus 寄存器值塞进 IEC 104 报文。但真正在项目里跑过的工程…

CangjieMagic:声明式DSL如何颠覆传统AI智能体开发?

CangjieMagic:声明式DSL如何颠覆传统AI智能体开发?

2026/8/12 20:40:12

1. 项目概述:为什么CangjieMagic能成为2025年的“爆款”?如果你最近在关注AI智能体开发,大概率已经被“CangjieMagic”这个名字刷屏了。作为一个在AI应用开发一线摸爬滚打了快十年的老码农,我见过太多框架的起起落落,从…

YARN Capacity Scheduler:多租户Hadoop集群资源调度实战指南

YARN Capacity Scheduler:多租户Hadoop集群资源调度实战指南

2026/8/12 20:30:12

1. 从资源管理的混乱到有序:为什么需要容量调度器如果你负责过公司的大数据集群,或者尝试过在共享的Hadoop集群上跑过多个任务,那你大概率经历过这样的场景:一个部门提交了一个巨型的Spark SQL分析作业,瞬间吃光了集群…

比较好的亚太EMBA,问了6位校友师资差别真的挺大

比较好的亚太EMBA,问了6位校友师资差别真的挺大

2026/8/12 7:11:29

比较好的亚太EMBA核心差异先看什么?对于希望兼顾工作与系统管理能力提升的亚太区高管而言,筛选匹配度高的EMBA项目时,师资配置是决定学习体验与实际收获的核心要素之一。我们结合3-4个公开信息透明、办学历史较长的亚太区主流EMBA项目特点&am…

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

2026/8/11 8:44:43

备考海外游学的亚洲EMBA面试,核心要围绕项目国际化设计逻辑、个人跨文化管理经验匹配度两个维度准备,避免把游学模块等同于普通旅游参访的认知偏差。不少备考者花3个月对比6份资料,却容易忽略面试官对“国际视野落地能力”的考察——比如香港…

比较好的国内EMBA,问了二十位校友聊透人脉价值

比较好的国内EMBA,问了二十位校友聊透人脉价值

2026/8/11 15:57:54

比较好的国内EMBA核心差异体现在哪些方面?比较好的国内EMBA的核心长期价值,很大程度上依托于校友网络的连接质量与资源生态的活跃度,这也是不少高管在择校时优先考量的因素。我们结合3-4个市场关注度较高的项目公开信息,从课程、师…

告别模组冲突!5步掌握《神界:原罪2》模组管理的终极秘诀

告别模组冲突!5步掌握《神界:原罪2》模组管理的终极秘诀

2026/8/12 9:39:37

告别模组冲突!5步掌握《神界:原罪2》模组管理的终极秘诀 【免费下载链接】DivinityModManager A mod manager for Divinity: Original Sin - Definitive Edition. 项目地址: https://gitcode.com/gh_mirrors/di/DivinityModManager 你是否曾经为《…

如何用Charge Limiter延长MacBook电池寿命:终极保护指南

如何用Charge Limiter延长MacBook电池寿命:终极保护指南

2026/8/12 9:39:37

如何用Charge Limiter延长MacBook电池寿命:终极保护指南 【免费下载链接】charge-limiter macOS app to set battery charge limit for Intel MacBooks 项目地址: https://gitcode.com/gh_mirrors/ch/charge-limiter 还在为MacBook电池健康度下降而烦恼吗&am…

推三返一模式5.0版本系统开发

推三返一模式5.0版本系统开发

2026/8/12 9:39:37

推三返一模式5.0版本系统开发要点编辑:araolin(私域邦网络土土哥)模式核心逻辑 推三返一是一种促销或分销机制,用户推荐三人完成特定行为(如购买、注册),推荐人可获得返利或奖励。5.0版本通常在…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/8 5:07:31

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/9 13:42:46

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/8 2:30:15

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…