Servlet 教程 之 Servlet Session 跟踪 1

简介: Servlet Session跟踪教程介绍了在HTTP无状态特性下保持客户端与服务器会话的三种方法:Cookie、隐藏表单字段和URL重写。Cookie通过分配唯一ID但不适用于所有浏览器;隐藏表单字段在表单提交时维持跟踪,但不适用于常规链接;URL重写将session ID添加到URL中,对无cookie支持的浏览器更友好,但会导致静态页面URL动态化。

Servlet 教程 之 Servlet Session 跟踪 1

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 会话跟踪的有效方式,但是点击常规的超文本链接()不会导致表单提交,因此隐藏的表单字段也不支持常规的 session 会话跟踪。

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

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

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

目录
相关文章
|
6月前
|
XML 数据格式
Servlet 教程 之 Servlet Session 跟踪 3
Servlet教程展示了如何使用HttpSession进行Session跟踪,以保持Web服务器与客户端的会话状态。当不存在Session时,代码创建一个并获取其创建及最后访问时间。Servlet `SessionTrack`检查是否为新访问者,更新访问计数和用户ID,并显示Session详细信息,包括ID、创建及最后访问时间。配置文件`web.xml`定义了Servlet映射。在浏览器中访问`http://localhost:8080/TomcatTest/SessionTrack`可查看效果。
19 1
|
6月前
|
XML Java 数据格式
Servlet 教程 之 Servlet 自动刷新页面 1
Servlet教程展示了如何使用Java Servlet自动刷新页面。通过response.setIntHeader("Refresh", 5)方法,页面将在5秒间隔自动刷新。给出的实例中,Servlet每5秒更新并显示当前时间。需编译Servlet并在web.xml配置,然后访问http://localhost:8080/TomcatTest/Refresh以观察效果。
48 10
|
6月前
|
Java 关系型数据库 MySQL
Servlet 教程 之 Servlet 有用的资源
探索Servlet世界:访问Sun's Site获取官方资料,Tomcat作为开源JSP引擎,搭配MySQL Connector/J实现数据库连接。深入学习Java编程,参考The Java Tutorials及Java 2 SDK文档,免费下载Java并关注Sun Developer Network获取最新资源。
45 1
|
6月前
|
Java
Servlet 教程 之 Servlet 生命周期 4
Servlet生命周期包括初始化、服务和销毁三个阶段:init()方法在创建时调用,service()方法处理客户端请求,destroy()方法在销毁前执行。对于POST请求,doPost()方法处理HTML表单数据。当Servlet不再使用时,由JVM的垃圾回收器自动清理。
41 5
|
6月前
|
Java 容器
Servlet 教程 之 Servlet 生命周期 2
Servlet生命周期包括初始化(init())、处理请求(service())、销毁(destroy())和垃圾回收。service()方法是核心,容器调用它来响应客户端请求,并根据HTTP类型调用doGet()或doPost()。当请求处理完毕,servlet会被销毁,最终由JVM的垃圾回收器清理。
52 5
|
6月前
|
Java
Servlet 教程 之 Servlet 生命周期 3
Servlet生命周期包括初始化(init())、服务(service())和销毁(destroy())三个阶段。doGet()方法处理GET请求,接收HttpServletRequest和HttpServletResponse参数。当Servlet不再使用时,由JVM的垃圾回收器自动清理。
50 5
|
6月前
|
Java 数据库连接
Servlet 教程 之 Servlet 生命周期 5
Servlet生命周期包括初始化(init())、服务(service())和销毁(destroy())三个阶段。destroy()方法在Servlet即将销毁时执行,用于资源释放和清理工作,如关闭数据库连接。之后,Servlet对象等待垃圾回收。
67 4
|
6月前
|
Java 容器
Servlet 教程 之 Servlet 生命周期 6
Servlet生命周期包括初始化(init())、处理请求(service())和销毁(destroy())。当首个请求到达时,容器加载Servlet并调用init()。之后,多个线程共享同一Servlet实例,每个线程独立调用service()处理请求。最后,销毁前调用destroy(),实例由JVM回收。
37 2
|
6月前
|
Java
Servlet 教程 之 Servlet 生命周期 1
Servlet生命周期包括初始化、服务和销毁三个阶段:init()方法在Servlet创建时调用,仅初始化一次;service()方法处理客户端请求,每次请求都创建新线程;destroy()方法在Servlet销毁前执行。Servlet实例在首次请求时创建,可通过配置在服务器启动时加载。init()方法用于设置一次性初始化数据。
84 3
|
6月前
|
存储 容器
Servlet 教程 之 Servlet Session 跟踪 2
Servlet教程介绍了如何使用HttpSession进行会话跟踪。HTTP本身无状态,但通过HttpSession接口,Servlet容器能在多个页面请求间识别用户并存储信息。调用HttpServletRequest的getSession()获取HttpSession对象。
32 0
下一篇
无影云桌面