response encodeRedirectURL encodeURL作用(转)

session对象能和客户建立意义对应的关系依赖于客户的浏览器是否支持cookie,如果客户的浏览器不支持的话,那么客户再不同网页之间的session对象可能时互不相同的,因为服务器无法将ID存放到客户端,就不能建立session对象和客户的一一对应关系。可以通过URL重写来实现session对象的唯一性。所谓URL重写就是当客户从一个页面重新连接到一个页面时,通过向这个新的URL添加参数,把session对象的id传过去,这样能够保证session对象是完全相同的。可以使用response对象调用encodeURL()或encodeRedirectURL()方法实现URL重写。

eg:

String str=response.encodeRedirectURL("hope.jsp");

连接目标写成:<%=str%>即可。

encodeURL()是本应用级别的,encodeRedirectURL()是跨应用的。  

 两者的区别:

在使用重定向时,response.sendRedirect(response.encodeRedirectURL());时一定要使用encodeRedirectUrl();

由于附加在URL中的session ID是动态产生的,对每一个用户是不同的,所以对于静态页面的相互跳转,URL重写机制无能为力。当然可以通过将静态页面转换为动态页面解决。


方法的执行:首先判断当前的Servlet是否执行了HttpSession对象的invalidate()方法(当前session是否失效,失效后重新建立新的session),如果已经执行返回参数URL。接下来判断客户端是否禁用了Cookie,没有禁用直接返回参数URL,如果禁用,则在参数URL中附加session ID,返回编码后的URL。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于 Java Servlet 的示例代码,实现了判断是否存在名为 "张三" 的 cookie,如果存在则跳到 "success.html" 页面,否则跳到登录页面: ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; @WebServlet("/servlet_1") public class Servlet_1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Cookie[] cookies = request.getCookies(); boolean cookieExists = false; if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals("张三")) { cookieExists = true; break; } } } if (cookieExists) { response.sendRedirect(response.encodeRedirectURL("/servlet_1/success.html")); } else { response.sendRedirect(response.encodeRedirectURL("/servlet_1/login.html")); } } } ``` 在上面的代码中,我们首先通过 `request.getCookies()` 方法获取所有的 cookie。然后,我们遍历所有的 cookie,查找名为 "张三" 的 cookie 是否存在。如果存在,我们就调用 `response.sendRedirect()` 方法将响应重定向到 "/servlet_1/success.html" 页面;否则,我们就将响应重定向到 "/servlet_1/login.html" 登录页面。 需要注意的是,我们在调用 `response.sendRedirect()` 方法时,使用了 `response.encodeRedirectURL()` 方法对 URL 进行编码。这是因为,在某些情况下,服务器会自动给 URL 添加 session ID,以支持会话管理。使用 `response.encodeRedirectURL()` 方法可以确保 URL 能够正确地包含 session ID。 此外,在实际应用中,我们还需要编写登录页面和成功页面的代码,并对用户输入的数据进行验证和清理,以避免安全漏洞和错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值