【问题标题】:Tomcat adds context-path to urlsTomcat 将上下文路径添加到 url
【发布时间】:2013-07-26 16:48:23
【问题描述】:

在我的应用程序中,生成的每个链接都被 response.ecodeURL 包围。在某些服务器上,encodeURL 将上下文路径添加到 URL。

应用程序名为“appl”。创建链接 /a/b/c.jsp 在 DEV 系统上创建 url /a/b/c.jsp,在 Prod 上创建 /appl/a/b/c.jsp

tomcat 位于通过 ajp 连接的 Apache Webserver 后面,不确定这是否相关。

编辑: 网络服务器不相关。我尝试直接访问 8080 端口,同样的情况又发生了。

【问题讨论】:

  • 方法HttpServletResponse.encodeURL 和HttpServletResponse.encodeRedirectURL 永远不应该在上下文路径之前。其他一些组件必须为您执行此操作。当你说“创建一个链接 /a/b/c.jsp”时,你到底是什么意思?
  • 我写了 ">Link 到 HTML

标签: java apache tomcat hyperlink


【解决方案1】:

<c:url> 总是将上下文路径预先添加到 URL:这是标准做法,应该始终这样做。如果您使用的是<c:url>,则不应添加自己的前缀。另请注意,<c:url> 通过HttpServletResponse.encodeURL 为您运行 URL。如果合适,该方法会添加基于 URL 的会话跟踪信息(例如“;jsessionid”路径参数)。

您应该始终将上下文前缀添加到所有 URL,无论您是使用 <c:url> 之类的东西还是自己做。你不应该两者都做。当您使用 ROOT 上下文时,上下文路径为 ""(即空字符串),并且不会在您的 URL 之前添加任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-15
    • 2011-01-02
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2015-10-12
    • 2021-07-19
    相关资源
    最近更新 更多