在远程服务器上部署时,将来自servlet的请求转发到.jsp会失败

时间:2017-09-21 10:40:23

标签: java jsp tomcat servlets forward

我已经坚持这个问题两天了,我找不到解决办法。 我有这个项目结构如上: enter image description here 我想将Survey(它是一个Servlet)的请求转发给survey.jsp。 现在,当我从IntelliJ在localhost上部署它时,转发成功。现在我使用.war并使用Tomcat Apache管理器将其部署到专用服务器。 当我致电dedicatedserverip:8080时,index.jsp正确加载localhost:8080。但是,当涉及到前进时,有两种情况:

  1. 当转发发生时.war文件的名称与survey.war不同时,我收到错误404。 (在这种情况下,我认为请求被转发到dedicatedserverip:8080
  2. 如果转发时.war文件的名称为survey.war,则会再次加载index.jsp页面。 (在这种情况下,我认为请求已转发到dedicatedserverip:8080/survey
  3. 以下是我用来转发请求的代码:

    req.getRequestDispatcher("/survey.jsp").forward(req, resp);
    

    现在我的问题是:做错了吗?或者有什么我必须明白我没有?如何修复它并获得localhost中所需的结果?

2 个答案:

答案 0 :(得分:1)

您是否尝试转发亲戚而不是绝对?

req.getRequestDispatcher("survey.jsp").forward(req, resp);

此外,如果您更改war文件的名称并且使用该应用程序的ServletContext,则应该没有问题。

答案 1 :(得分:0)

最后,我解决了这个问题。它与前锋无关,问题出在提交表格中。行动是action="/survey"。我替换为${pageContext.request.contextPath}/survey。它解决了这个问题。这解释了为什么在.war名称为survey.war时调用了索引页面,而在错误页面不同时调用了错误页面。 感谢您的支持。