博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四种会话跟踪技术
阅读量:7062 次
发布时间:2019-06-28

本文共 1384 字,大约阅读时间需要 4 分钟。

http://blog.csdn.net/xh16319/article/details/8033552

会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。

HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。
当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。
当一个客户在多个页面间切换时,服务器会保存该用户的信息。
有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。
1.隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话应用。
2.URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。
3.Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP
响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个
Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至
在客户端计算机重启后它仍可以保留其值。 见:
4.Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话

实现URL重写

URL重写在客户端浏览器不支持Cookie(下章介绍)的情况下使用的,它是客户端浏览器请求服务器时,URL地址后面加上类似于 “SESSIONID=***”形式的参数,服务器端通过获取SESSIONID关键字来获取会话值。

在程序第一次访问服务器端时,服务端并不能确认客户端浏览器是否支持Cookie。因此,当服务器第一次发出请求时,服务端会默认采用URL重写,也就是将SESSIONID写到URL地址中传递。
核心代码:String SessionId=request.getRequestedSessionId();
当客户端发送请求后,服务器会根据提交给客户端浏览器的信息自动检查客户端是否启用了Cookie,如果启用,将不再进行URL重写。如果没有,则继续使用URL重写。
通过response对象的encodeURL(String url)方法可以进行URL重写。
public String encodeURL(String url);
对包含SessionID的URL进行编码。如果不需要编码,就直接返回这个URL。
Servlet引擎必须提供URL编码方法,因为在有些情况下,我们将不得不重写URL。
例如,在响应对应的请求中包含一个有效的Session,但是这个Session不能被非URL的(例如Cookie)的手段来维持。
所以所有提供给Servlet的URL都应通过这个方法运行,这样才能确保会话跟踪能够在所有浏览器中正常运行。

隐藏域和URL重写有着共同的优点:

它们在Cookie被禁用或者根本不支持的情况下依旧能够工作。
缺点:
所有页面必须是表单提交之后的结果,还有涉及许多冗长的处理工作。

 

 

 

转载于:https://www.cnblogs.com/ttjava/p/3641031.html

你可能感兴趣的文章
微信内打开链接显示已停止访问该网页
查看>>
基于servlet和jsp的简单注册登录页面(包括:增删查改及分页显示)
查看>>
数据结构基础之一
查看>>
10.29随笔
查看>>
ScintillaNET v2.5 简单应用实例讲解
查看>>
I.MX6 Android busybox 从哪里生成的
查看>>
循环节长度 蓝桥杯
查看>>
linux软件安装:源码(1)
查看>>
c++-merge k sorted lists heap的灵活应用
查看>>
干货站
查看>>
RabbitMQ 基础概念介绍
查看>>
1117bootstrap
查看>>
centos6.5上卸载和安装JDK7
查看>>
从文件加载至NSData
查看>>
关于代码通过API操作阿里云RDS的巨坑
查看>>
jqgrid 获取选中行主键集合
查看>>
arraycopy效率比较
查看>>
使用 Linq 对多个对象进行join操作 C#
查看>>
【转载】VC操作剪切板
查看>>
dede二级导航与二级栏目 ----内容介绍二级导航
查看>>