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。