FreeOZ论坛

标题: 两种URL重写方法的比较 [打印本页]

作者: key    时间: 16-7-2009 23:58
标题: 两种URL重写方法的比较
通过<c:url>标签与HttpServletResponse.encodeURL()两种方法都能重写URL,
但这两种方法是有区别的:

对于http://开头的路由,大家都不支持,这个没有什么好说了。

但余下的部分,两者处理有所不同:
HttpServletResponse.encodeURL()只能使用相对路径,比如
  1. <%
  2.   pageContext.setAttribute("u", response.encodeURL("jstl_url_test.jsp"));
  3.   pageContext.setAttribute("u2", response.encodeURL("./jstl_url_test.jsp"));
  4.   pageContext.setAttribute("u3", response.encodeURL("/jstl_url_test.jsp"));
  5. %>
  6. u = ${u}

  7. u2 = ${u2}

  8. u3 = ${u3}
复制代码
你可以看到u, u2都有重写,但u3没有。另外,还应该注意到,u3没有加入context path。这也是和<c:url>非常不同的地方。

再看<c:url>的表现
  1. u = <c:url value="jstl_url_test.jsp" />

  2. u2 = <c:url value="./jstl_url_test.jsp" />

  3. u3 = <c:url value="/jstl_url_test.jsp" />
复制代码
u和u2的结果和前面的一致,但u3则不同,u3自动加入了context path及进行了url write




欢迎光临 FreeOZ论坛 (https://www.freeoz.org/bbs/) Powered by Discuz! X3.2