Servlet到JSP问题

时间:2016-02-10 11:40:55

标签: jsp servlets http-status-code-404

我是Web开发的新手,正在开发一个使用servlet和JSP的Web应用程序,我创建了我的servlet和JSP,但是我很难让servlet将请求转发给JSP。

在我的main页面中,有<form>使用get方法,操作指向我的servlet(SelectSupportUnit.do):

<form method="get" action="SelectSupportUnit.do">

在我的servlet中,它将我的JDBC Query的结果转发给JSP:

request.setAttribute("suppUnitList", suppUnitList); 
RequestDispatcher view = request.getRequestDispatcher("QueryResults.jsp"); 
view.forward(request, response);

在我的web.xml文件中,它声明了JSP(这是在将请求从servlet转发到JSP时,它在Head First Servlets和JSPs书中所说的):

<servlet> 
<servlet-name>SelectSupportUnit</servlet-name> 
<jsp-file>/QueryResults.jsp</jsp-file> 
</servlet> 
<servlet-mapping> 
<servlet-name>SelectSupportUnit</servlet-name> 
<url-pattern>/QueryResults.jsp</url-pattern> 
</servlet-mapping>

当我运行它时(使用Eclipse IDE和Tomcat v7容器),它给了我HTTP status 404。并说它无法找到我的servlet(SelectSupportUnit.do)。

这会使它看起来好像在调用servlet的<form>元素中,你应该调用JSP,但如果我这样做,它会绕过servlet吗?

我的form看起来像这样: 我的元素现在看起来像这样:

<form target="_blank" method="get" action="${PageContext.request.contextPath}/SelectSupportUnit"> 

3 个答案:

答案 0 :(得分:0)

您必须在表单中提及servlet的名称

<form method="get" action="SelectSupportUnit">

然后它将转到Servlet的doGet()方法。您不需要在表单操作中添加SelectSupportUnit.do

答案 1 :(得分:0)

您必须将servlet和jsp文件正确映射到分隔的URL!

以下是应该起作用的web.xml的一个简单示例:

<web-app>
  <servlet>
    <servlet-name>SelectSupportUnit</servlet-name>
    <servlet-class>my.package.path.SelectSupportUnit</servlet-class>
  </servlet>

  <servlet>
      <servlet-name>QueryResults</servlet-name>
      <jsp-file>QueryResults.jsp</jsp-file>
  </servlet>

  <servlet-mapping>
    <servlet-name>SelectSupportUnit</servlet-name>
    <url-pattern>SelectSupportUnit.do</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>QueryResults</servlet-name>
    <url-pattern>/QueryResults.html</url-pattern>
  </servlet-mapping>
</web-app>  

答案 2 :(得分:0)

您的操作缺少上下文路径。该操作应该是action="${pageContext.request.contextPath}/SelectSupportUnit.do",或者作为<c:url> JSTL操作(将自动插入上下文路径)的结果创建。

第二个问题是.do名称,这似乎不合适。我建议使用servlet的暗示名称。

404是由于形成不良的动作URL。您永远不会直接处理JSP。始终处理其servlet控制器。