URL重写
通常,会话管理是通过服务器将 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());
%>
===========================================================
我自己最后多说两句,弄了半天,它这个所谓的url重写,其实只是因为不能传递 sessionid,而使用这个方法将sessionid编码进url,以便在下一个访问的网页中能够使用session而已,并非指那个在.net中说 的url重写,.net里的那个url重写是在访问真正的网页之前,将url进行分析,然后通过服务器转发从而访问网页,但是客户端看到的则还是发出请求 时的url,但实际访问的网页是其他的url地址。
分享到:
相关推荐
在ASP.NET框架中,URL重写通过使用`System.Web.Routing`命名空间中的类来实现,而不是直接与HTTP服务器的URL处理机制交互。这种技术的核心在于创建路由规则,将用户输入的友好的URL映射到实际的处理程序,如ASP.NET...
outbound-rule是URLRewrite中的一个重要概念,它可以将response.encodeURL或c:url重写后的URL转换成我们想要的格式。例如: ``` <from>/rewrite-status <to>/test/status/ ``` 这个规则表明,当我们使用response...
1. **搜索引擎友好**:搜索引擎更倾向于抓取简洁、有意义的URL,URL重写可以使得动态参数化的URL变得静态化,从而提高网站在搜索引擎中的排名。 2. **隐藏技术细节**:通过URL重写,可以隐藏应用的内部路径结构,...
在`doGet`或`doPost`方法中,可以通过设置`response`的`sendRedirect`或修改`response`的`encodeURL`来实现URL重写。 4. **配置web.xml**:在`web.xml`中,我们需要为处理伪静态请求的Servlet配置URL映射。例如,...
以下是一个简单的JSP应用示例,展示了如何在关闭cookies的情况下使用URL重写来管理会话: 1. `hello1.jsp`:在这个页面中,我们首先创建一个新的会话,并在其中存储一个对象(例如,一个整数)。然后,我们使用`...
### 关于Web回话跟踪与Session机制 #### Session机制概览 ...综上所述,通过合理的使用Cookie和URL重写技术,结合适当的编程手段,开发者可以有效地实现Web应用程序中的Session跟踪,从而为用户提供更佳的用户体验。
URL 重写很简单,比如我要从 1.jsp 页面跳转到 2.jsp,采用超链接的方式,可以用两种方式:一种如下所示:<a href="2.jsp">2.jsp另一种是<a href="<%=response.encodeURL("2.jsp")%>">2.jsp其中第二种方式就是采用了...
综上所述,`Session`是Web应用中维持用户状态的关键工具,依赖于`Cookie`进行标识,但在无`Cookie`环境下,通过URL重写也能保持其功能。了解`Session`的工作原理对于优化Web应用性能和用户体验至关重要。
2. **URL重写与`encodeURL()`**: - `encodeURL()`方法:在HTTP响应接口中,这个方法主要用于对URL进行编码,确保特殊字符不会引起解析问题。如果服务器启用了URL重写,通常是为了处理无状态的HTTP协议(如在Cookie...
总结,Session是Web开发中用于维护用户会话状态的关键技术,它通过多种方式如Cookie、URL重写等传递会话标识,并在服务器端存储用户相关数据。理解和熟练使用Session对于构建交互性强的Web应用程序至关重要。
1. **使用URL重写API**:在portlet中生成动态内容(如图片链接)时,应始终使用`renderResponse.encodeURL()`方法。这可以确保portlet生成的URL包含必要的参数,以便门户服务器能够正确处理请求。例如,正确生成图像...
11. **URL重写**:通过`HttpServletRequest`的`encodeURL()`和`decodeURL()`方法,实现了URL编码和解码,方便了URL重写和安全URL处理。 12. **环境感知的初始化参数**:允许Servlet和过滤器根据部署环境的不同获取...
URL 重写: 就是把原来送往客户端页面中的所有URL,重新编写. 怎么重新编写 String newURL=response.encodeURL(oldURL); <form action="url"> <a href="url"> 目的:保证session在cookie禁用时仍然有效 ...
2. **URL重写(URL Rewriting)**:当服务器检测到客户端不支持Cookies时,它会通过URL重写的方式来传递Session ID。具体来说,服务器会在响应中返回的URL后面加上`;JSESSIONID=xxxxx`这样的参数,从而在客户端请求...
- 如果浏览器关闭了Cookies,可以使用URL重写来开启SESSION跟踪,例如在hello1.jsp中设置`session.putValue("num", num);`,然后编码URL传递SESSION ID。 12. **URL重写与SESSION**: - `response.encodeURL(...
- 如果浏览器关闭了Cookies,可以使用URL重写来跟踪SESSION。在hello1.jsp中,先开启session,然后编码URL,例如: ```jsp (100); session.putValue("num",num); String url =response.encodeURL("hello2.jsp...
另外,URL重写也是管理会话的一种方式,如`encodeURL()`和`encodeRedirectURL()`可以对URL编码,以便携带会话信息。 4. **JSTL与标签文件** JSP标准标签库(JSTL)提供了简化JSP页面的标签,包括核心标签库。例如...
综上所述,0B0-109认证覆盖了WebLogic Server 9的关键概念和技术细节,包括但不限于系统异常处理、WAR文件创建、URL重写、JDBC连接管理、实体Bean生命周期以及事务属性设置等。准备这项认证不仅有助于提高个人的专业...
- `response.encodeURL(java.lang.String url)`:用于常规URL的重写。 #### 五、Session的序列化与持久化 在高负载环境下,为了防止服务器故障导致的Session丢失,可以采用序列化技术将内存中的Session对象持久化...