Java 为什么在瞄准我的应用程序时Tomcat基本url不是我的应用程序url?

Java 为什么在瞄准我的应用程序时Tomcat基本url不是我的应用程序url?,java,tomcat,tomcat7,war,maven-war-plugin,Java,Tomcat,Tomcat7,War,Maven War Plugin,我对我的问题做了很多研究,但让我们面对现实吧,我没有找到解决办法 我正在Tomcat7应用服务器上部署一个war文件。一切都好。但是,当我以我的应用程序为目标时,在开发人员控制台的帮助下,我可以看到我的所有链接(相对链接和绝对链接)都断开了 因此,我的所有资产、内部API调用以及最终的应用程序都无法访问 例如: 我的应用部署到:http://localhost:8585/myapp/。 我的链接(绝对链接和相对链接)基于以下url:http://localhost:8585/,那么我所有的链接都

我对我的问题做了很多研究,但让我们面对现实吧,我没有找到解决办法

我正在Tomcat7应用服务器上部署一个war文件。一切都好。但是,当我以我的应用程序为目标时,在开发人员控制台的帮助下,我可以看到我的所有链接(相对链接和绝对链接)都断开了

因此,我的所有资产、内部API调用以及最终的应用程序都无法访问

例如: 我的应用部署到:
http://localhost:8585/myapp/
。 我的链接(绝对链接和相对链接)基于以下url:
http://localhost:8585/
,那么我所有的链接都被破坏是合乎逻辑的,因为它们没有指向正确的url

我希望我的应用程序不受任何部署依赖、约束或常量的影响。如果你能帮我找到一些合适的方法来解决我的问题,那就太好了:读到我需要做的就是重命名我的war ROOT.war在ROOT级别部署会让我恶心

祝你今天愉快,谢谢你,
最多。

好吧,你基本上有3个选项来实现你(据我所知)想要的:

  • 你不会读到的:在根上下文中部署应用程序;但是,正如您正确指出的那样,这使得应用程序的部署依赖于应用程序,当然,这并不总是可能的

  • 您可以在Tomcat前面放置一个代理(例如apachehttpd),并设置一些重写规则来翻译
    http://localhost/
    http://localhost:8585/myapp/
    -这有时有用,但在大多数情况下过于复杂,有时不可能(例如,由于公司的部署政策)

  • 最合适的方法是:使用相对链接(如Henry在评论中所述)和在JSP中使用(
    request.contextPath


  • 以上下文路径无关紧要的方式编写应用程序(也就是说,使用相对链接,或者当需要绝对链接时,使用请求中使用的上下文路径进行构建。谢谢Jozef!正如我所说的,第一个选项是不可能的。第三个选项可能很有趣,但由于应用程序中没有使用JSP,因此不可能实现带有JSP标记的解决方案。第二个选项非常有趣ing,我会关注它,并尽快给你反馈!不同的技术有不同的解决方案来创建上下文相关路径。在pages/js中硬编码完整路径不是一件明智的事情。应该有一种方法可以在任何模板语言中使用上下文路径,或者直接在servlet中使用上下文路径。@JozefChocholacek谢谢你的回答!Finally我已经将Nginx放在我的Tomcat前面,并且我已经删除了代码中的
    标记。一切都按照预期工作。