我已经坚持这个问题两天了,我找不到解决办法。
我有这个项目结构如上:
我想将Survey
(它是一个Servlet)的请求转发给survey.jsp
。
现在,当我从IntelliJ
在localhost上部署它时,转发成功。现在我使用.war
并使用Tomcat Apache
管理器将其部署到专用服务器。
当我致电dedicatedserverip:8080
时,index.jsp
正确加载localhost:8080
。但是,当涉及到前进时,有两种情况:
.war
文件的名称与survey.war
不同时,我收到错误404。 (在这种情况下,我认为请求被转发到dedicatedserverip:8080
).war
文件的名称为survey.war
,则会再次加载index.jsp
页面。 (在这种情况下,我认为请求已转发到dedicatedserverip:8080/survey
)以下是我用来转发请求的代码:
req.getRequestDispatcher("/survey.jsp").forward(req, resp);
现在我的问题是:做错了吗?或者有什么我必须明白我没有?如何修复它并获得localhost中所需的结果?
答案 0 :(得分:1)
您是否尝试转发亲戚而不是绝对?
req.getRequestDispatcher("survey.jsp").forward(req, resp);
此外,如果您更改war文件的名称并且使用该应用程序的ServletContext,则应该没有问题。
答案 1 :(得分:0)
最后,我解决了这个问题。它与前锋无关,问题出在提交表格中。行动是action="/survey"
。我替换为${pageContext.request.contextPath}/survey
。它解决了这个问题。这解释了为什么在.war
名称为survey.war
时调用了索引页面,而在错误页面不同时调用了错误页面。
感谢您的支持。