为什么 Tomcat base url 不是我的应用程序 url 而定位我的应用程序?

Why Tomcat base url is not my app url while targeting my app?

我已经针对我的问题进行了大量搜索,但让我们面对现实吧,我没有找到解决方法。

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

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

示例: 我的应用程序已部署到:http://localhost:8585/myapp/。 我的链接(绝对和相对)是基于这个 url : http://localhost:8585/,那么我的所有链接都被破坏是合乎逻辑的,因为它们没有针对正确的 url.

我想让我的应用程序不受任何部署依赖性、约束或常量的影响。如果你能用一些正确的方法帮助我解决我的问题,那就太好了:阅读我需要做的就是重命名我的 war ROOT.war 以在根级别部署让我感到恶心。

祝你有美好的一天,谢谢你, 最大

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

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

  2. 您可以在 Tomcat 前面放置一个代理(例如 Apache HTTPD)并设置一些重写规则以将 http://localhost/ 转换为 http://localhost:8585/myapp/ - 这是有时有用,但在大多数情况下太复杂,有时不可能(例如由于公司的部署策略);

  3. 恕我直言,最合适的一种:使用相对链接(正如 Henry 在他的评论中所述)和使用 ContextPathrequest.contextPath in JSP );