Java Servlet和getRequestDispatcher不转发

时间:2017-02-22 17:13:11

标签: java eclipse jsp servlets forward

我正在开发一个简单的Java Web应用程序,该应用程序显示一个页面,您可以在其中添加新客户端,然后显示另一个页面,显示新添加的客户端但我一直收到此错误:

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>

2 个答案:

答案 0 :(得分:0)

了解如何在eclipse中创建断点。

在这里放置一个断点

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

了解如何在eclipse中启动调试会话。

开始一个。如果执行永远不会在断点处停止意味着配置错误。如果它确实停止,则意味着404将在后续请求中抛出。

如果你只有doGet(...)处理请求,那么你可能有url路径问题

答案 1 :(得分:0)

问题很可能来自那条线:

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

当您提供相对网址而不是绝对网址时,它会用于从当前网址开始构建完整网址

因此,如果之前的网址为/LearningJSP,那么当/LearningJSP/AddClient使用/AddClient以正常的404错误结尾时,会向<form method="get" action="/AddClient"> 发送以下请求。

修复:只使用绝对网址:

python setup.py install