转自 :http://edu.codepub.com/2009/1213/18697.php
public java.lang.String encodeURL(java.lang.String url)Encodes the specified URL by including the session ID in it, or, if encoding is not needed, returns the URL unchanged. The implementation of this method includes the logic to determine whether the session ID needs to be encoded in the URL. For example, if the browser supports cookies, or session tracking is turned off, URL encoding is unnecessary.
For robust session tracking, all URLs emitted by a servlet should be run through this method. Otherwise, URL rewriting cannot be used with browsers which do not support cookies.
Parameters:
url - the url to be encoded.
Returns:
the encoded URL if encoding is needed; the unchanged URL otherwise.
通常,会话管理是通过服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中来唯一标识每个用户会话。如果浏览器不支持 cookies,或者将浏览器设置为不接受 cookies,我们可以通过 URL 重写来实现会话管理。
实质上 URL 重写是通过向 URL 连接添加参数,并把 session ID 作为值包含在连接中。然而,为使这生效,你需要为你的 servlet 响应部分的每个连接添加 session ID 。
把 session ID 加到一个连接可以使用一对方法来简化:response.encodeURL() 使 URL 包含 session ID,如果你需要使用重定向,可以使用 response.encodeRedirectURL () 来对 URL 进行编码。
encodeURL () 及 encodeRedirectedURL () 方法首先判断 cookies 是否被浏览器支持;如果支持,则参数 URL 被原样返回,session ID 将通过 cookies 来维持。
来看下面的例子,两个 JSP 文件:hello1.jsp 和 hello2.jsp,及它们之间的影响。我们在 hello1.jsp 中简单的创建一个会话,并在 session 中存储一个对象实例。接着用户可以点击页面的连接到达 hello2.jsp。在 hello2.jsp 中,我们从 session 中获取原先放置的对象并显示它的内容。注意,我们在 hello1.jsp 中调用了 encodeURL() 方法来获得 hello2.jsp 的链接,使得在浏览器停用 cookies 的情况下,session ID 自动添加到 URL,hello2.jsp 仍能得到 session 对象。
首先在启用 cookies 的情况下运行。然后关闭对 cookie 的支持,重启浏览器,再运行一次。每次你都可以看到会话管理在起作用,并能在页之间传递信息。
注意,如果你想让这个例子能在关闭了 cookies 的浏览器中工作,你的 JSP 引擎必须支持 URL 重写。
hello1.jsp
<%@ page session="true" %>
<%
Integer num = new Integer(100);
session.putValue("num",num);
String url =response.encodeURL("hello2.jsp");
%>
<a href='<%=url%>'>hello2.jsp</a>
hello2.jsp
<%@ page session="true" %>
<%
Integer i= (Integer)session.getValue("num");
out.println("Num value in session is "+i.intValue());
%>
使用时,若你的浏览器支持cookie的话,要设置为不支持cookie,才会有效果,你将看到链接后的页面地址,追加了sessionID的值。
分享到:
相关推荐
<a href="<%=response.encodeURL("showMember.jsp")%>">浏览会员| <a href="<%=response.encodeURL("register.jsp")%>">会员注册| <a href="<%=response.encodeURL("login.jsp")%>">会员登录| <a href="<%=...
例如,`RequestDispatcher`接口可以用来转发请求或者重定向,`Request`对象的`getLocale()`方法可获取客户端的首选语言,`Response`的`encodeURL()`和`encodeRedirectURL()`方法用于在URL中添加Session ID,确保会话...
JSP提供了两个方法来帮助开发者实现这个功能:`response.encodeURL()`和`response.encodeRedirectURL()`。 `response.encodeURL(String url)`方法的作用是在给定的URL后面附加Session ID,但仅当浏览器不支持...
例如,在Servlet或JSP文件中,可以使用`HttpServletResponse`接口中的`encodeURL()`和`encodeRedirectURL()`方法来对URL进行编码。这两个方法的作用在于确保即使在没有Cookie的情况下,也能通过URL重写的方式维持...
6. **encodeURL(String url)**:对URL进行编码,以便正确地处理会话跟踪。 7. **sendRedirect(String location)**:将浏览器重定向到指定的URL。 ### 示例代码 在JSP页面中,Request对象常用于获取表单数据,如下...
这个规则表明,当我们使用response.encodeURL或c:url时,/rewrite-status将被重写成/test/status/。 使用outbound-rule可以解决我们在页面中显示链接的问题。例如,我们可以使用outbound-rule将链接重写成我们想要...
- `<a href="<%=response.encodeURL("showMember.jsp")%>">Ա</a>`:链接到展示成员信息的页面。 - `<a href="<%=response.encodeURL("register.jsp")%>">Աع</a>`:链接到注册页面。 - `<a href="<%=response....
jsp经典面试题 JSP(Java Server Pages)是一种基于Java技术... String url =response.encodeUrl("hello1.jsp"); %>。 这些问题涵盖了JSP的基础知识和高级应用,了解这些问题可以帮助开发者更好地理解和使用JSP技术。
<script type='text/javascript' src='<%=response.encodeURL(contextPath+"/dwr/interface/service.js")%>'> ``` 然后定义了`firstDwr`函数来调用`sayHello`方法,并定义回调函数`callBackHello`来处理返回的数据...
- **encodeURL(String url)**:对 URL 进行编码。 - **decodeURL(String url)**:对 URL 进行解码。 #### 三、示例代码 以下是一个简单的示例,展示了如何使用 `HttpServletRequest` 和 `HttpServletResponse` ...
String url = response.encodeURL("hello2.jsp");%><a href=''<%=url%>''>hello2.jsp</a>hello2.jsp: 我们可以看到JSP提供了许多便捷的方法来处理HTML FORM中的数据、包含静态文件、执行浏览重定向、防止输出被...
在 Java 中,可以使用 response.encodeURL(url) 方法来将 JSESSIONID 信息追加到 URL 中。这种方法可以确保在禁用 Cookie的情况下,服务器端仍然可以获取 JSESSIONID 信息。例如: ```java String path = response....
在本文中,我们将深入探讨URLRewrite的配置和使用方法。 首先,为什么要使用URLRewrite?通常有三个主要原因: 1. **搜索引擎友好**:搜索引擎更倾向于抓取简洁、有意义的URL,URL重写可以使得动态参数化的URL变得...
这里,`response.encodeURL()`方法自动在URL后面加上了Session ID,确保了即使没有Cookie也能正常跟踪Session。 以上就是关于JSP的一些常见问题及其解决方案的详细介绍,希望能帮助开发者更好地理解和使用JSP技术。
response.encodeURL("/url"); response.encodeRedirectURL("/url"); ``` 2. **Cookie**:Cookie是服务器发送到用户浏览器并保存在本地的一小段信息,下次用户请求同一服务器时,会携带Cookie信息一起发送。这种...
String url =response.encodeURL("hello2.jsp"); %><a href=<%=url%>>hello2.jsp ``` 这样,SESSION信息会被编码到URL中,即使没有Cookie,服务器仍然可以识别用户。 这些知识点涵盖了JSP的基础使用、数据处理...
- `response.encodeURL("hello2.jsp")`会为URL添加SESSION ID,确保在无Cookie的情况下仍能保持SESSION状态。 这些知识点涵盖了JSP的基础和进阶应用,对于理解和解答JSP面试问题至关重要。在实际面试中,面试官...
- URL重写:`response.encodeURL()`,将session ID添加到URL中,以保持会话状态。 - 添加cookie:`response.addCookie()`,向响应中添加cookie。 #### 三、JSP页面构成与特性 JSP(JavaServer Pages)是一种简化...
这里使用了 `encodeURL` 方法对URL进行了重写,以包含Session ID信息,从而即使没有Cookie也能维持Session状态。 #### 13. JSP如何发送邮件? 虽然JSP本身并不直接提供发送邮件的功能,但可以通过调用Java Mail ...
例如,在处理GET请求时,我们可能会使用`response.encodeURL()`方法对URL进行编码,以防止特殊字符引起的问题。同时,需要注意的是,如果重写了`init()`方法,别忘了调用`super.init();`以确保初始化的正确执行。 ...