当我调用我的servlet时,Tomcat给出了404

时间:2013-04-26 20:13:45

标签: java jsp tomcat servlets

我无法访问我使用表单调用的servlet。我检查了arborescence,web.xml和表单,但我看不出任何问题。我使用Eclipse和“web动态项目”。

有我的树枝:

enter image description here

我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Z-ProjetJ2EE</display-name>
<welcome-file-list>
  <welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
  <description></description>
  <servlet-name>CommandeServlet</servlet-name>
  <servlet-class>controleur.CommandeServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>CommandeServlet</servlet-name>
  <url-pattern>/urlCommandeServ</url-pattern>
</servlet-mapping>
</web-app>

我的表单(我尝试了完整的网址,但它没有用):

<form action="/urlCommandeServ" method="post">

我的servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String cat = request.getParameter("categorie");
    Float prix = Float.parseFloat(request.getParameter("prix"));
    response.sendRedirect("CreerCommande?cat=" + cat+"&prix="+prix);

我在eclipse中没有任何错误,tomcat中的日志文件夹是空的。你能帮帮我吗?

编辑:

我的错误是:

Error 404

我同意关于我在response.sendRedirect上的错误的回复,但这不是我错误的真正主题:)即使我删除了doPost上的所有代码,我也有此错误,而不是白页。< / p>

4 个答案:

答案 0 :(得分:4)

执行重定向时,您需要包含.jsp

response.sendRedirect("CreerCommande.jsp?cat=" + cat+"&prix="+prix);

而不是:

response.sendRedirect("CreerCommande?cat=" + cat+"&prix="+prix);

还要将您的contextpath添加到表单中的url。

<form action="<%=request.getContextPath()%>/urlCommandeServ" method="post">

答案 1 :(得分:3)

<form> html更改为

<form action="urlCommandeServ" method="post">

当您发布到/urlCommandeServ时,您要求Tomcat(或您的Web服务器)查找名为urlCommandeServ的Web应用程序,该应用程序不存在,因此您将获得404. < / p>

答案 2 :(得分:0)

为什么不使用RequestDispatcher?

RequestDispatcher dispatcher = request.getRequestDispatcher("yourPage.jsp");
if (dispatcher != null){
    dispatcher.forward(request, response);
}

答案 3 :(得分:0)

请参阅:SO Link

“如果此代码在您的J2SE中有效,则意味着您需要在某处包含com.mysql.jdbc.Driver类的JAR文件(所谓的JDBC驱动程序)。这个JAR需要在Tomcat中可见。所以,我会建议将mysql-jdbc.jar放在项目的/ WEB-INF / lib目录的物理位置。“