2017-02-22 32 views
0

我的工作是显示一个页面,您可以在其中添加新的客户端和一个简单的Java Web应用程序,然后它表明,呈现在客户端新增加的,但我不断收到此错误另一个页面:的Java Servlet和的getRequestDispatcher不转发

HTTP Status 404 - /LearningJSP/AddClient 
type Status report 
message /LearningJSP/AddClient 
description The requested resource is not available. 

我不明白问题所在。 这里是我的应用程序的文件。

“添加新客户” 的.jsp

<%@ page pageEncoding="UTF-8" %> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Création d'un client</title> 
    </head> 
    <body> 
     <div> 
      <form method="get" action="AddClient"> 
       <fieldset> 
        <legend>Informations client</legend> 

        <label for="nomClient">Nom <span class="requis">*</span></label> 
        <input type="text" id="nomClient" name="nomClient" value="" size="20" maxlength="20" /> 
        <br /> 

        <label for="prenomClient">Prénom </label> 
        <input type="text" id="prenomClient" name="prenomClient" value="" size="20" maxlength="20" /> 
        <br /> 

        <label for="adresseClient">Adresse de livraison <span class="requis">*</span></label> 
        <input type="text" id="adresseClient" name="adresseClient" value="" size="20" maxlength="20" /> 
        <br /> 

        <label for="telephoneClient">Numéro de téléphone <span class="requis">*</span></label> 
        <input type="text" id="telephoneClient" name="telephoneClient" value="" size="20" maxlength="20" /> 
        <br /> 

        <label for="emailClient">Adresse email</label> 
        <input type="email" id="emailClient" name="emailClient" value="" size="20" maxlength="60" /> 
        <br /> 
       </fieldset> 
       <input type="submit" value="Valider" /> 
       <input type="reset" value="Remettre à zéro" /> <br /> 
      </form> 
     </div> 
    </body> 
</html> 

的Servlet

package Controllers; 

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import Model.Client; 

/** 
* Servlet implementation class ClientServ 
*/ 

public class ClientServ extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

public static final String Add = "/affichierClient.jsp"; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 


     String Nom = request.getParameter("nomClient"); 
     String Prenom = request.getParameter("prenomClient"); 
     String Adresse = request.getParameter("adresseClient"); 
     String Telephone = request.getParameter("telephoneClient"); 
     String Email = request.getParameter("emailClient"); 

     String message; 

     if(Nom.trim().isEmpty() || Adresse.trim().isEmpty() || 
       Telephone.trim().isEmpty()) { 

      message="Vous n'avez pas rempli tous les champs"; 
      } 

     else { 
      message="Client crée avec succès"; 
      } 

     Client client = new Client(); 
     client.setNom(Nom); 
     client.setPrenom(Prenom); 
     client.setAdresse(Adresse); 
     client.setEmail(Email); 
     client.setTelephone(Telephone); 

     request.setAttribute("client", client); 
     request.setAttribute("message", message); 

    this.getServletContext().getRequestDispatcher(Add).forward(request, response);  
    } 


} 

的JSP页面来显示新添加的客户端

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Affichage de client</title> 
</head> 
<body> 

<p class="info"> ${message} </p> 

<p>Nom: ${client.Nom}</p> 
<p>Prenom: ${client.Prenom}</p> 
<p>Adresse: ${client.Adresse}</p> 
<p>Numéro de télephone: ${client.Telephone}</p> 
<p>Email: ${client.Email}</p> 

</body> 
</html> 

web.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <display-name>WebApp</display-name> 
    <servlet> 
     <servlet-name>AddClient</servlet-name> 
     <servlet-class>Controllers.ClientServ</servlet-class> 
    </servlet> 



    <servlet-mapping> 
     <servlet-name>AddClient</servlet-name> 
     <url-pattern>/AddClient</url-pattern> 
    </servlet-mapping> 


</web-app> 
+0

是您的JSP真名叫 “affichierClient.jsp”,用错字?你的servlet被调用了吗?注意:你不应该使用GET来创建一个新的客户端。这是POST的目的。请,请学习并尊重Java命名约定。 –

+0

你可以调试一个断点的servlet吗?如果你能,这意味着404被套上一个后续请求 – efekctive

+0

@JBNizet JSP文件名是否正确以及有关GET方法,我只是下面就Openclassrooms的教程,我也像他们那样完全一样的东西,怎么可以使用doPost来代替? –

回答

0

它是可能的问题来自于线:

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

当你给一个相对URL而不是绝对URL,它用于从当前的开始构建完整的URL

因此,如果以前的URL是/LearningJSP以下请求被发送到/LearningJSP/AddClient时,应使用/AddClient在正常的404错误结束。

修复:只使用绝对URL:

<form method="get" action="/AddClient"> 
0

阅读有关如何在eclipse中创建断点的信息。

在此放置一个断点

String Nom = request.getParameter("nomClient"); 

阅读有关如何在Eclipse启动调试会话。

开始一个。如果执行永不停止在断点处意味着配置错误。如果它停止,意味着404被抛入后续请求中。

如果你只有的doGet(...)处理请求,那么你可能有URL路径发出