Java Servlet API 中引用 Session 机制来追踪客户的状态。Servlet API 中定义了 javax.servlet.http.HttpSession 接口,Servlet 容器必须实现这个接口。当一个 Session 开始时,Servlet 容器将创建一个 HttpSession 对象,Servlet 容器为 HttpSession 分配一个唯一标识符,称为 Session ID。Servlet 容器将 Session ID 作为 Cookie 保存在客户的浏览器中。每次客户发出 HTTP 请求时,Servlet 容器可以从 HttpRequest 对象中读取 Session ID,然后根据 Session ID 找到相应的 HttpSession 对象,从而获取客户的状态信息。
当客户端浏览器中禁止 Cookie,Servlet 容器无法从客户端浏览器中取得作为 Cookie 的 Session ID,也就无法跟踪客户状态。
Java Servlet API 中提出了跟踪 Session 的另一种机制,如果客户端浏览器不支持 Cookie,Servlet 容器可以重写客户请求的 URL,把 Session ID 添加到 URL 信息中。
HttpServletResponse 接口提供了重写 URL 的方法:public java.lang.String encodeURL(java.lang.String url)
该方法的实现机制为:
● 先判断当前的 Web 组件是否启用 Session,如果没有启用 Session,直接返回参数 url。
● 再判断客户端浏览器是否支持 Cookie,如果支持 Cookie,直接返回参数 url;如果不支持 Cookie,就在参数 url 中加入 Session ID 信息,然后返回修改后的 url。
我们可以对网页中的链接稍作修改,解决以上问题:
修改前:
<a href=“maillogin.jsp“>
修改后:
<a href=“<%=response.encodeURL(“maillogin.jsp“)%>“>
分享到:
相关推荐
本文将详细解析Cookie与Session的工作原理、区别及应用场景。 #### 一、Cookie与Session的基本概念 **Cookie**:是一种简单的客户端存储技术,用于保存用户的偏好设置、登录状态等信息。当用户访问网站时,服务器...
需要注意的是,Session的正常工作依赖于Cookie,因为Session ID通常通过Cookie在客户端和服务器之间传递。如果用户禁用了Cookie,那么Session跟踪将无法进行,除非采用URL重写等替代方法。 总结来说,Cookie和...
在本文中,我们将深入探讨Session编程,特别是如何在禁用Cookie的情况下实现Session管理。 Cookie是一种小型文本文件,通常由服务器发送到用户的浏览器,并由浏览器在后续请求中返回给服务器,以此来维持会话状态。...
1、Cookie和Session简介与区别Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪Cookie是完全保持在客户端的如:IE firefox...
Cookie的工作原理是服务器向客户端颁发一个Cookie,客户端浏览器将其保存起来。当客户端再次请求服务器时,浏览器将Cookie连同请求一起提交给服务器,服务器检查该Cookie,以此来辨认用户状态。 Cookie是一小段的...
Cookie是通过在客户端存储信息来识别用户身份,而Session则是在服务器端存储信息来实现这一目的。 **Cookie机制** Cookie是由W3C组织提出并由Netscape社区发展起来的一种机制,现在已经成为Web应用的标准。它解决...
- Cookie可以独立工作,但Session依赖于Cookie来传递Session ID。 #### 三、联系 1. **Session ID通过Cookie传递**:最常用的方式是通过Cookie将Session ID传送给服务器。这样,服务器可以识别用户的会话状态,并...
如果客户端禁用了Cookie,则Session将无法正常工作。这时,服务器通常会采取URL重写的方式来传递Session ID。 #### 三、Session的工作原理 当用户首次访问服务器时,服务器会创建一个唯一的Session ID,并将其存储...
本文实例讲述了php禁用cookie后session设置方法。分享给大家供大家参考,具体如下: 我们都知道当在session 会话有基于cookie和基于url两种传递SESSIONID的方法。为了实现客户端禁止cookie发送的情况也不影响客户...
4. **依赖性**:Session依赖于Cookie,如果客户端禁用Cookie,服务器可以通过URL重写技术传递SessionID,但这样会对URL产生污染,用户体验可能下降。 5. **安全性**:由于Session数据存储在服务器,相对Cookie来说...
如果浏览器不支持 Cookie(如大部分手机中的浏览器)或者把 Cookie 禁用了,Cookie 功能就会失效。不同的浏览器采用不同的方式保存 Cookie。 5. COOKIE 的应用 Cookie 可以用来记录用户访问次数。Java 中把 Cookie...
然而,如果用户禁用了Cookie,或者由于某种原因无法使用Cookie时,服务器可以采用其他方法(如URL重写)来传递Session ID,但这种方式通常不如使用Cookie高效和方便。 #### 使用场景 - **Cookie适用于**:不涉及...
的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪 Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用 2、Cookie的配置与应用 Setcookie(string name, string value, int ...
5. 隐私:用户可禁用Cookie,影响网站功能;Session依赖于服务器,用户无法直接控制。 在实际应用中,选择Cookie还是Session取决于需求。例如,登录状态、购物车等短期状态通常用Session,而个性化设置、浏览历史等...
Cookie 的工作原理是当客户端请求服务器,如果服务器需要记录该用户状态,就使用 response 向客户端浏览器颁发一个 Cookie。客户端浏览器会把 Cookie 保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该 ...
综上所述,Cookie和Session各有其特点和应用场景,理解它们的工作原理和使用方式对于构建用户友好的Web应用至关重要。在实际开发中,合理运用这两种机制,可以提升用户体验,同时保障数据安全。