在我的tomcat开发环境中不能使用相对链接

我正在用tomcat开发一个web应用程序。 在开发环境中,应用程序的根地址是localhost:8080/myapp/ 。 在生产中,根地址是www.myapp.com/

当我在我的网站中使用相对链接(例如/home ,它在生产环境中可以正常工作,但是在我的开发中到达的地址是localhost:8080/home ,它剥离了应用程序的根目录。 显然,我不能只用home ,因为它会第一次工作,而只是连接到地址string的末尾。 我也不能使用主机文件,我不知道如何创build一个别名或只是从一些别名redirect到localhost:8080/myapp/

这似乎是一个非常普遍的问题。 提前致谢!

解决scheme实际上是在您的网页代码中,而不是您可以执行的任何configuration。 假设您使用JSP来生成您的HTML,您需要更改这样的链接:

 <a href="/home">a link to the root of my webapp</a> 

看起来像这样:

 <a href="<%= response.encodeURL(request.getContextPath() + "/home") %>"> a link to the root of my webapp </a> 

request.getContextPath是真正的魔术:它总是返回属于你的webapp的前缀,不pipe它是什么。 对于ROOT webapp,它将返回“”(空string)。 另一个可能会返回“/ foo / bar”(如果你的webapp被部署为foo#bar.war)。

如果客户端不使用cookie,response.encodeURL会将会话标识符添加到您的URL中,以便在Cookie不可用时会话将工作。

如果你正在使用其他的内容生成框架(Velocity,Freemarker等),有类似的方法来实现这些框架提供的相同的东西。