博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
保持java web会话
阅读量:6816 次
发布时间:2019-06-26

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

hot3.png

Servlet Session 跟踪

HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。

但是仍然有以下三种方式来维持 Web 客户端和 Web 服务器之间的 session 会话:

Cookies

一个 Web 服务器可以分配一个唯一的 session 会话 ID 作为每个 Web 客户端的 cookie,对于客户端的后续请求可以使用接收到的 cookie 来识别。

这可能不是一个有效的方法,因为很多浏览器不支持 cookie,所以我们建议不要使用这种方式来维持 session 会话。

隐藏的表单字段

一个 Web 服务器可以发送一个隐藏的 HTML 表单字段,以及一个唯一的 session 会话 ID,如下所示:

该条目意味着,当表单被提交时,指定的名称和值会被自动包含在 GET 或 POST 数据中。每次当 Web 浏览器发送回请求时,session_id 值可以用于保持不同的 Web 浏览器的跟踪。

这可能是一种保持 session 会话跟踪的有效方式,但是点击常规的超文本链接(<A HREF...>)不会导致表单提交,因此隐藏的表单字段也不支持常规的 session 会话跟踪。

URL 重写

您可以在每个 URL 末尾追加一些额外的数据来标识 session 会话,服务器会把该 session 会话标识符与已存储的有关 session 会话的数据相关联。

例如,http://w3cschool.cc/file.htm;sessionid=12345,session 会话标识符被附加为 sessionid=12345,标识符可被 Web 服务器访问以识别客户端。

URL 重写是一种更好的维持 session 会话的方式,它在浏览器不支持 cookie 时能够很好地工作,但是它的缺点是会动态生成每个 URL 来为页面分配一个 session 会话 ID,即使是在很简单的静态 HTML 页面中也会如此。

HttpSession 对象

除了上述的三种方式,Servlet 还提供了 HttpSession 接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式。

Servlet 容器使用这个接口来创建一个 HTTP 客户端和 HTTP 服务器之间的 session 会话。会话持续一个指定的时间段,跨多个连接或页面请求。

您会通过调用 HttpServletRequest 的公共方法 getSession() 来获取 HttpSession 对象,如下所示:

转载于:https://my.oschina.net/u/3697586/blog/1823313

你可能感兴趣的文章
变量和赋值
查看>>
mysql的优化
查看>>
关于域证书的发布CA和CRL的内容 (Windows 2008 Server R2 SP1)
查看>>
软件测试英语专业词汇汇总
查看>>
Java实现word文档在线预览,读取office(word,excel,ppt)文件
查看>>
python笔记(五)装饰器函数
查看>>
Permutations II
查看>>
Super Ugly Number
查看>>
(转载)UTF-8和GBK的编码方式的部分知识:重要
查看>>
convert RGB image to a 2x2 [GR;BG] Bayer pattern
查看>>
机器学习 -- 机器学习是什么?
查看>>
三台机器之间ssh互信配置
查看>>
mysql8.0.16二进制安装
查看>>
第一次课后作业
查看>>
ZooKeeper学习第三期---Zookeeper命令操作
查看>>
MFC MDI 窗口函数执行顺序
查看>>
2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
查看>>
[代码]ural 1913 Titan Ruins: Old Generators Are Fine Too
查看>>
[转载]C++的顺序点(sequence point)和副作用(side effect)
查看>>
javascript 插入DOM节点
查看>>