java - 为什么 Tomcat base url 在定位我的应用程序时不是我的应用程序 url?

标签 java tomcat tomcat7 war maven-war-plugin

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

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

因此,我的所有 Assets 、内部 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 在他的评论中所述)和使用 ContextPath (JSP 中的request.contextPath);

关于java - 为什么 Tomcat base url 在定位我的应用程序时不是我的应用程序 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36643145/

相关文章:

java - 匹配的通配符是严格的,但找不到元素 'fss:oauth' 的声明

tomcat - nginx -> Tomcat 与文件夹路径 - 重定向太多

java - Spring Boot 启用 http 请求日志记录(访问日志)

必须定期清除 Tomcat 工作目录

java - Tomcat : web application java class files/jar location

java - 获取相对于框架的鼠标 X,Y 坐标

java - 如何从 hashCode 获取字符串

java - Wicket:通过 ListView 中的 TextFields 更新模型

java - 无法为连接 URL '' : Tomcat + MySQL + Spring MVC 创建类 'null' 的 JDBC 驱动程序

ubuntu - 如何正确使用Tomcat 7新别名?