【发布时间】:2016-05-20 17:55:30
【问题描述】:
我是 Web 开发新手,正在开发一个将使用 servlet 和 JSP 的 Web 应用程序,并且我创建了我的 servlet 和我的 JSP,但是我很难让 servlet 将请求转发给 JSP。
在我的main 页面中,有一个<form> 使用get 方法,并且动作指向我的servlet (SelectSupportUnit.do):
<form method="get" action="SelectSupportUnit.do">
在我的 servlet 中,它会将结果从我的 JDBC 查询转发到 JSP:
request.setAttribute("suppUnitList", suppUnitList);
RequestDispatcher view = request.getRequestDispatcher("QueryResults.jsp");
view.forward(request, response);
在我的 web.xml 文件中,它声明了 JSP(当将请求从您的 servlet 转发到 JSP 时,这是 Head First Servlets and 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">
【问题讨论】:
-
SelectSupportUnit.do的真正含义是什么?您的 Servlet 的名称中是否包含 点 (.) ? -
@ThisaruGuruge 提到的问题(servlet 的拼写错误)或者您忘记在 web.xml 中提及它(不是 pom,为什么会出错)。如果你不想绕过它,你应该明确调用 servlet 而不是 JSP。
-
@ThisaruGuruge,是的,它就是这样形成的。
-
@Minsk 请确定:你的包名是
SelectSupportUnit,类名是do? -
我在那里犯了一个错误,我将名称更正为
SelectSupportUnit。这是在一些例子中,我不明白 .do 是不需要的。
标签: jsp servlets http-status-code-404