【问题标题】:Spring MVC application context pathSpring MVC 应用程序上下文路径
【发布时间】:2011-04-23 16:39:16
【问题描述】:

我的 Spring MVC 应用程序在 Apache 2 后面的 Tomcat 上运行,充当代理。我通过http://localhost:8080/myapp 之类的网址直接在tomcat 中访问我的应用程序。我使用像http://localhost/tomcat/myapp 这样的网址通过代理访问我的应用程序。

第二个 url 使我的应用程序行为不正确,因为它假设它位于 /myapp 上下文路径中,但通过代理它应该位于 /tomcat/myapp 中。

在 Spring 或 Servlet API 中是否有一个变量,如果我通过代理访问它,它保存 /tomcat/myapp,如果我直接访问它,它保存 /myapp

感谢

【问题讨论】:

标签: java spring-mvc tomcat servlets


【解决方案1】:

我认为您需要启用代理支持。此链接可能会对您有所帮助或在这方面提供一些提示。

【讨论】:

  • 为什么有人-1这个答案?这是正确的,虽然链接显然应该指向tomcat.apache.org/tomcat-6.0-doc/proxy-howto.html
  • 我在有关代理支持的文档的页面上找到了解决方案。我不应该从proxy/tc 代理到tomcat:8080。相反,我应该从 proxy/myapp 代理到 tomcat:8080/myapp
  • @artemb:很抱歉提供了错误的链接。其实当时我复制了几个链接,代理页面的链接是最后一个,并没有被复制好。因此,我最终粘贴了错误的内容。但好在,你做对了。谢谢,我修改了帖子以包含正确的链接。
【解决方案2】:

在搜索 tomcat 的配置设置时偶然发现了这篇文章。 有一种更简单的方法可以配置 tomcat 以处理您遇到的确切情况。见:

http://tomcat.apache.org/tomcat-5.5-doc/proxy-howto.html

在tomcat中为代理简单配置一个连接器,servlet/struts上下文路径问题就解决了。

-edit:显然我没有阅读 #2 评论...

【讨论】:

    【解决方案3】:

    我的意思是当我重定向到“/index.jsp”时 它实际上重定向到 “http://localhost/myapp/index.jsp” 代替 "http://localhost/tomcat/myapp/index.jsp"

    重定向到index.jsp 而不是/index.jsp

    当您重定向到 /index.jsp 时,它充当绝对 url,并被重定向到 myapp/index.jspindex.jsp 是一个相对 URL,将重定向到 tomcat/myapp/index.jsp

    【讨论】:

    • 万一他打算从tomcat/myapp/user/user.html重定向到tomcat/myapp/index.html怎么办
    • 而且仅供参考,/index.html 不是绝对的,它也是相对的,而是与上下文相关的。
    • 谢谢,Adeel,这正是我想要的。 Spring MVC 应用程序都是关于用户友好的 url,如 /user/add,在这种情况下,我认为使用“../../index.jsp”之类的重定向是错误的
    猜你喜欢
    • 1970-01-01
    • 2018-05-06
    • 2013-12-22
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多