gpt4 book ai didi

java - ${pageContext.request.contextPath} 在本地工作,但不在远程

转载 作者:太空宇宙 更新时间:2023-11-04 16:22:47 25 4
gpt4 key购买 nike

我处于一种奇怪的情况,我发现我目前必须使用两种不同的路径命名约定,具体取决于我是在本地主机上测试还是我的应用程序部署到我的域。

当我在本地运行我的应用程序时,我在这里访问它:localhost:8080/MyApp/welcome在我的域中,这里:mydomain.com/welcome

在这个欢迎页面(一个 JSP)上,我想链接到另一个页面,比如/welcome/foobar。如果我的链接是这种风格的(注意pageContext前缀):

<form action="${pageContext.request.contextPath}/welcome/foobar ... >
<button type="submit">Admin Login</button>
</form>

然后在本地,我将被正确定向到 localhost:8080/MyApp/welcome/foobar .更糟糕的是,当我在我的域上部署并单击此链接时,我被错误地定向到 http://welcome/foobar/ .如果我使用简单的 <form action="/welcome/foobar" ... >,我也会收到相反的结果(本地不正确,远程更正)路径。

有没有人有消除这种不匹配的解决方案?另外,我不完全明白为什么会这样,所以给任何也会给我解释的人加分。

最佳答案

首先要了解什么是contextPath以及为什么使用它。

让我们以您的本地 URL 为例.. localhost:8080/MyApp/welcome

这里有什么所有信息..

hostName = 本地主机

port = 8080

contextPath =我的应用

现在获取您的真实环境 URL mydomain.com/welcome

hostName = mydomain.com

port = 默认即 80

contextPath = /

因此对于您的域,contextPath 只是 /这是通常配置为缩短 URL 的方式。使用 contextPath 背后的想法是为您的 jsp 页面生成相对链接。它最好与 <anchor> 一起使用标签

如果您只想链接到另一个页面,您应该使用 <a href="${pageContext.request.contextPath}/welcome/foobar">Submit </a>

关于java - ${pageContext.request.contextPath} 在本地工作,但不在远程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27873568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com