2017-02-22 61 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路徑發出