(2)会话跟踪技术

2024-06-09 12:58
文章标签 会话 跟踪 技术

本文主要是介绍(2)会话跟踪技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介:

HTTP是无状态的通信协议,当客户端发出请求时,服务器才会建立连接,一旦请求结束,服务器便中断连接.
这样的机制,就使得服务器无法判断:目前正在连接的客户端与之前的某个连接是否为同一个客户.
在某些情况下,必须想办法将客户状态维持在服务器上,这种维持客户状态的技术,我们称之为会话跟踪技术.

四种实现方式

  1. URL传递参数
  2. 隐藏表单区域
  3. 会话对象(HttpSession)
  4. 使用Cookie

1.URL传递参数

URL(Uniform Resource Locator,统一资源定位符)是指Web上特定的页面地址.
可以在URL的结尾部分添加一些数据,这些附加的数据会随着HTTP协议的请求报文一起被发送到服务器.
URL传递参数的一般做法是:
原始的URL:

http://server:post/Servlet

添加附加数据的URL:

http://server:post/servlet?parameter=value

2.隐藏表单区域

所谓隐藏表单域是指,利用HTML中的表单隐藏元素Hidden.
Hidden元素并不会出现在客户端的浏览器中,但是它的值可以在提交表单时被发送到服务器.
注意:隐藏表单要放在form表单中一起提交.

<form name="formName" method="POST" action="…">……<input type="hidden" name="hiddenName" value="parameterValue">……
</form>

3.会话对象(HttpSession)

所谓的会话是指:在一段时间内,某客户端与服务器之间的一连串的请求与响应.
会话对象可以使用户访问一个站点的多个页面时共享信息.
javax.servlet.http.HttpSession接口用来提供会话对象,如果我们在程序中需要操作会话,就可以使用它.
可以通过HttpServletRequest的getSession方法获得(或创建)HttpSession对象。

String loginName="yves";
//获得会话对象,没有session就创建
HttpSession session = request.getSession();
//在会话对象中设置一个新的属性,并赋值,以后的请求中可以访问该数据
session.setAttribute("loginName", loginName);
//获得会话对象,false代表没有session就不创建
HttpSession session = request.getSession(false);
//从会话对象中获得在上一个页面中存储在其中的值
String loginName= (String)(session.getAttribute("loginName"));
//在会话对象中设置一个新的属性,并赋值 session.setAttribute("loginName", loginName);
方 法 原 型说 明
void setAttribute(String name, Object value)在会话中设置新的属性
Object getAttribute(String name)根据属性名称获得属性的值
Enumeration getAttributeNames()获得所有属性的名称
void removeAttribute(String name)删除指定名称的属性
void invalidate()丢弃会话,释放其中存储的任何数据
void setHeader(String name, String value)设置String类型的值到name指定的标头
void setIntHeader(String name, int value)设置int类型的值到name指定的标头
void addHeader(String name, String value)新增String类型的值到name指定的标头
void addIntHeader(String name, int value)新增int类型的值到name指定的标头
boolean containsHeader(String name)判断指定名称的标头是否存在,如果存在返回true,否则false
void setStatus(int statuCode)设置响应报文中的状态码

4.使用Cookie

(1)服务器创建cookie 然后发送给客户端.
Cookie cookie = new Cookie(“key”,”value”);
response.addCookie(cookie);//可以添加多个cookie
(2)服务器获取来自用户的cookie数组,然后遍历.
Cookie[] cookies = request.getCookies();

总结:

会话跟踪技术实际上就是处理页面间数据应该如何传递的问题,包括URL传参、隐藏表单域、使用Session和使用Cookie这四种方式;
会话对象是进行会话跟踪最流行的一种方式,它主要解决了HTTP协议是无状态的问题。

这篇关于(2)会话跟踪技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045245

相关文章

乐鑫 Matter 技术体验日|快速落地 Matter 产品,引领智能家居生态新发展

随着 Matter 协议的推广和普及,智能家居行业正迎来新的发展机遇,众多厂商纷纷投身于 Matter 产品的研发与验证。然而,开发者普遍面临技术门槛高、认证流程繁琐、生产管理复杂等诸多挑战。  乐鑫信息科技 (688018.SH) 凭借深厚的研发实力与行业洞察力,推出了全面的 Matter 解决方案,包含基于乐鑫 SoC 的 Matter 硬件平台、基于开源 ESP-Matter SDK 的一

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

(1995-2022年) 全国各省份-技术交易活跃度

技术交易活跃度是一个关键指标,用于衡量技术市场的交易频繁程度和活跃性。它不仅显示了市场参与者对技术交易的参与热情,而且交易的频率也体现了市场的活力。这一指标对于不同的利益相关者具有不同的意义: 对投资者而言,技术交易活跃度是把握市场趋势、评估交易策略和预测市场波动的重要工具。对企业来说,技术交易活跃度反映了其技术创新的活跃程度和市场竞争的激烈程度,有助于企业制定技术创新和市场竞争策略。对政策制定

AI与音乐:当技术与艺术发生冲突

AI在创造还是毁掉音乐? 在科技日新月异的今天,人工智能(AI)已经渗透到了我们生活的方方面面,音乐领域也不例外。然而,尽管AI为音乐创作带来了前所未有的便利,我却深感其正在毁掉音乐的本质。 首先,AI的介入使得音乐创作过程变得过于机械化。传统的音乐创作往往需要音乐家们经过长时间的思考、尝试和修改,最终才能创作出触动人心的作品。这一过程不仅体现了音乐家的才华和技艺,更蕴含了他们对生活的感悟和对

IPD推行成功的核心要素(十一)技术规划与平台规划促进公司战略成功

随着外部大环境的影响,各企业仅有良好的愿望是不够的。预测并顺应新兴市场和技术的变化,变危机为转机,不断推出强大的产品才是一个公司持续繁荣的根本保障。而高效的产品开发往往是基于某些关键技术,针对市场推出的一个或几个产品系列,这些产品系列通常共用一些产品平台,共用一种或者几种关键技术。当一家企业进入了平稳发展期,已经建立了较为完善的管理制度和产品开发流程,但是依然认为竞争对手是那样强大,那样不可战胜。

云原生容器技术入门:Docker、K8s技术的基本原理和用途

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、容器技术概述 1、什么是容器技术 2、容器技术的历史与发展 3、容器技术与虚拟机的比较 4、容器技术在云原生中的作用 二、Docker基础 1、Docker简介 2、Docker架构 3、Docker与工作原理 三、Kubernetes(k8s)基础 1、

JavaScript Promise技术

你可能已经知道Promises现在已经是JavaScript标准的一部分了。Chrome 32 beta版本已经实现了基本的Promise API。如今,Promise的概念在web开发中已经不是什么新鲜玩意了。我们中的大多数人已经在一些流行的JS库例如Q、when、RSVP.js中使用过了Promises。即使是jQuery中也有一个和Promises很类似叫做Deferred的东西。但是Ja

Sharding(切片)技术(解决数据库分库一致性问题)

Sharding(切片) 不是一门新技术,而是一个相对简朴的软件理念,就是当我们的数据库单机无法承受高强度的i/o时,我们就考虑利用 sharding 来把这种读写压力分散到各个主机上去。 所以Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是Horizontal Partitioning 水平扩展(或横向扩展)的解决方案,其主要目的是为突破单节点数