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“)%>“>
一道华为的面试(笔试)题目,如下,希望能帮助大家更好的理解这一点!
Which method is used by a servlet to place its session ID in a URL that is written to the servlet’s response output stream?
(译:那个方法是servlet用于将其session ID入在一个URL中,该URL写入servlet的响应输出流)
A. The encodeURL method of the HttpServletRequest interface.
B. The encodeURL method of the HttpServletResponse interface.
C. The rewriteURL method of the HttpServletRequest interface.
D. The rewriteURL method of the HttpServletResponse interface.
分享到:
相关推荐
- `<a href="<%=response.encodeURL("showMember.jsp")%>">Ա</a>`:链接到展示成员信息的页面。 - `<a href="<%=response.encodeURL("register.jsp")%>">Աع</a>`:链接到注册页面。 - `<a href="<%=response....
JSP提供了两个方法来帮助开发者实现这个功能:`response.encodeURL()`和`response.encodeRedirectURL()`。 `response.encodeURL(String url)`方法的作用是在给定的URL后面附加Session ID,但仅当浏览器不支持...
例如,在Servlet或JSP文件中,可以使用`HttpServletResponse`接口中的`encodeURL()`和`encodeRedirectURL()`方法来对URL进行编码。这两个方法的作用在于确保即使在没有Cookie的情况下,也能通过URL重写的方式维持...
String url = response.encodeURL("hello2.jsp");%><a href=''<%=url%>''>hello2.jsp</a>hello2.jsp: 我们可以看到JSP提供了许多便捷的方法来处理HTML FORM中的数据、包含静态文件、执行浏览重定向、防止输出被...
<script type='text/javascript' src='<%=response.encodeURL(contextPath+"/dwr/interface/service.js")%>'> ``` 然后定义了`firstDwr`函数来调用`sayHello`方法,并定义回调函数`callBackHello`来处理返回的数据...
jsp经典面试题 JSP(Java Server Pages)是一种基于Java技术... String url =response.encodeUrl("hello1.jsp"); %>。 这些问题涵盖了JSP的基础知识和高级应用,了解这些问题可以帮助开发者更好地理解和使用JSP技术。
- `response.encodeURL("hello2.jsp")`会为URL添加SESSION ID,确保在无Cookie的情况下仍能保持SESSION状态。 这些知识点涵盖了JSP的基础和进阶应用,对于理解和解答JSP面试问题至关重要。在实际面试中,面试官...
在 Java 中,可以使用 response.encodeURL(url) 方法来将 JSESSIONID 信息追加到 URL 中。这种方法可以确保在禁用 Cookie的情况下,服务器端仍然可以获取 JSESSIONID 信息。例如: ```java String path = response....
这里,`response.encodeURL()`方法自动在URL后面加上了Session ID,确保了即使没有Cookie也能正常跟踪Session。 以上就是关于JSP的一些常见问题及其解决方案的详细介绍,希望能帮助开发者更好地理解和使用JSP技术。
String url =response.encodeURL("hello2.jsp"); %><a href=<%=url%>>hello2.jsp ``` 这样,SESSION信息会被编码到URL中,即使没有Cookie,服务器仍然可以识别用户。 这些知识点涵盖了JSP的基础使用、数据处理...
在本文中,我们将深入探讨URLRewrite的配置和使用方法。 首先,为什么要使用URLRewrite?通常有三个主要原因: 1. **搜索引擎友好**:搜索引擎更倾向于抓取简洁、有意义的URL,URL重写可以使得动态参数化的URL变得...
16. `response.encodeURL()` 和 `response.sendRedirect()`:用于URL编码和重新定向操作。 17. `response.addCookie()` 和 `request.getCookies()`:在响应中添加Cookie以及获取客户端所有Cookie。 18. `...
如果客户端禁用了Cookie,可以通过URL重写的方式来传递Session ID,例如使用`response.encodeURL()`和`response.encodeRedirectURL()`方法。 Session对象的创建是在程序中首次调用`request.getSession()`时触发,...
- URL重写:`response.encodeURL()`,将session ID添加到URL中,以保持会话状态。 - 添加cookie:`response.addCookie()`,向响应中添加cookie。 #### 三、JSP页面构成与特性 JSP(JavaServer Pages)是一种简化...
response.encodeURL("/url"); response.encodeRedirectURL("/url"); ``` 2. **Cookie**:Cookie是服务器发送到用户浏览器并保存在本地的一小段信息,下次用户请求同一服务器时,会携带Cookie信息一起发送。这种...
### IT知识点:Cook文档存储与会话管理技术详解 #### 一、会话技术概览 在探讨具体的会话管理技术之前,我们首先需要理解...了解这些技术的工作原理和使用方法,对于构建稳定、高效且用户体验友好的Web应用至关重要。
这里使用了 `encodeURL` 方法对URL进行了重写,以包含Session ID信息,从而即使没有Cookie也能维持Session状态。 #### 13. JSP如何发送邮件? 虽然JSP本身并不直接提供发送邮件的功能,但可以通过调用Java Mail ...
例如,在处理GET请求时,我们可能会使用`response.encodeURL()`方法对URL进行编码,以防止特殊字符引起的问题。同时,需要注意的是,如果重写了`init()`方法,别忘了调用`super.init();`以确保初始化的正确执行。 ...
String URL = response.encodeURL("/MyShop/SwitchBook?name=java"); out.println("点击购买</a>"); ``` 这样即使用户禁用了Cookie,通过URL重写也能保持会话的状态信息。 #### 五、结论 Cookie作为一种常见...
提供了`RequestDispatcher`的`include()`和`forward()`方法的增强,以及`Response.encodeUrl()`的改进,支持URL重写,有助于实现无状态会话管理和SEO优化。 8. **过滤器链的改进(Filter Chain Improvements)** ...