${pageContext.request.contextPath} 在本地工作,但不在远程
${pageContext.request.contextPath} Working locally, but not remotely
我处于一种奇怪的情况,我发现我目前必须使用两种不同的路径命名约定,具体取决于我是在本地主机上测试还是我的应用程序部署到我的域。
当我在本地 运行 我的应用程序时,我在此处访问它:localhost:8080/MyApp/welcome
在我的域中,在此处:mydomain.com/welcome
在这个欢迎页面(一个JSP),我想link到另一个页面,说/welcome/foobar。如果我的link是这种风格(注意pageContext前缀):
<form action="${pageContext.request.contextPath}/welcome/foobar ... >
<button type="submit">Admin Login</button>
</form>
然后在本地,我将正确地定向到 localhost:8080/MyApp/welcome/foobar
。更糟糕的是,当我在我的域上部署并单击此 link 时,我被错误地定向到 http://welcome/foobar/
。如果我使用简单的 <form action="/welcome/foobar" ... >
路径,我也会收到相反的结果(本地不正确,远程正确)。
有没有人有消除这种不匹配的解决方案?另外,我不完全明白为什么会这样,所以给任何能给我解释的人加分。
首先要了解什么是 contextPath
以及为什么要使用它。
让我们以您当地的例子为例 URL.. localhost:8080/MyApp/welcome
所有信息都在这里..
hostName
= 本地主机
port
= 8080
contextPath
= MyApp
现在进入你的真实环境URLmydomain.com/welcome
hostName
= mydomain.com
port
= 默认值即 80
contextPath
= /
因此,对于您的域,contextPath 只是 /
,这是通常配置为缩短 URL 的方式。使用 contextPath 背后的想法是为您的 jsp 页面生成相对链接。它最好与 <anchor>
标签
一起使用
如果你只是想 link 到另一个页面,你应该使用 <a href="${pageContext.request.contextPath}/welcome/foobar">Submit </a>
我处于一种奇怪的情况,我发现我目前必须使用两种不同的路径命名约定,具体取决于我是在本地主机上测试还是我的应用程序部署到我的域。
当我在本地 运行 我的应用程序时,我在此处访问它:localhost:8080/MyApp/welcome
在我的域中,在此处:mydomain.com/welcome
在这个欢迎页面(一个JSP),我想link到另一个页面,说/welcome/foobar。如果我的link是这种风格(注意pageContext前缀):
<form action="${pageContext.request.contextPath}/welcome/foobar ... >
<button type="submit">Admin Login</button>
</form>
然后在本地,我将正确地定向到 localhost:8080/MyApp/welcome/foobar
。更糟糕的是,当我在我的域上部署并单击此 link 时,我被错误地定向到 http://welcome/foobar/
。如果我使用简单的 <form action="/welcome/foobar" ... >
路径,我也会收到相反的结果(本地不正确,远程正确)。
有没有人有消除这种不匹配的解决方案?另外,我不完全明白为什么会这样,所以给任何能给我解释的人加分。
首先要了解什么是 contextPath
以及为什么要使用它。
让我们以您当地的例子为例 URL.. localhost:8080/MyApp/welcome
所有信息都在这里..
hostName
= 本地主机
port
= 8080
contextPath
= MyApp
现在进入你的真实环境URLmydomain.com/welcome
hostName
= mydomain.com
port
= 默认值即 80
contextPath
= /
因此,对于您的域,contextPath 只是 /
,这是通常配置为缩短 URL 的方式。使用 contextPath 背后的想法是为您的 jsp 页面生成相对链接。它最好与 <anchor>
标签
如果你只是想 link 到另一个页面,你应该使用 <a href="${pageContext.request.contextPath}/welcome/foobar">Submit </a>