我正在用 tomcat 开发一个 web 应用程序。在 dev env 中,应用程序的根地址是localhost:8080/myapp/
. 在生产中,根地址是www.myapp.com/
.
当我在我的网站中使用相对链接时,例如/home
,它在生产中工作正常,但我在我的开发中到达的地址是localhost:8080/home
,它会剥离应用程序的根。显然,我不能只使用home
,因为它会在第一次工作,但只会连接到地址字符串的末尾。我也不能使用主机文件,我不知道如何创建别名或只是将流量从某个别名重定向到localhost:8080/myapp/
.
这似乎是一个非常普遍的问题。提前致谢!
解决方案实际上是在您的网页代码中,而不是在您可以执行的任何配置中。假设您正在使用 JSP 来生成 HTML,您需要像这样更改链接:
<a href="/home">a link to the root of my webapp</a>
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
<a href="<%= response.encodeURL(request.getContextPath() + "/home") %>">
a link to the root of my webapp
</a>
Run Code Online (Sandbox Code Playgroud)
request.getContextPath 是这里真正的魔法:它总是返回属于您的 web 应用程序的前缀,无论它是什么。对于ROOT webapp,它将返回""(空字符串)。另一方面,它可能会返回“/foo/bar”(如果您的 web 应用程序部署为 foo#bar.war)。
如果客户端未使用 cookie,则 response.encodeURL 会将会话标识符添加到您的 URL,以便会话在 cookie 不可用时工作。
如果您正在使用其他内容生成框架(Velocity、Freemarker 等),则可以通过类似的方式实现这些框架提供的相同功能。
归档时间: |
|
查看次数: |
1826 次 |
最近记录: |