Сообщения об ошибках HTTP 400 и 500

#java #servlets #tomcat7

#java #сервлеты #tomcat7

Вопрос:

когда я запускаю свое приложение, у меня возникает ошибка HTTP:

Статус HTTP 404 — /Имяпроекта/

Это URL-адрес моего проекта:

локальный хост: 8080 /Инициация1/

Когда я ввожу эту строку в адресную строку:

localhost:8080/Initiation1/CarteIdentite

у меня это сообщение об ошибке HTTP 500:

 javax.servlet.ServletException: Error instantiating servlet class ca.web.CarteIdentite
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)


root cause 

java.lang.ClassNotFoundException: ca.web.CarteIdentite
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)
  

Это мой код сервлета:

 package ca.web;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;

/**
 * Servlet implementation class CarteIdentite
 */
@WebServlet("/CarteIdentite")
public class CarteIdentite extends HttpServlet
{
    // paramètres d’instance
    private String defaultNom = null;
    private String defaultAge = null;
    private String defaultCourriel = null;
    //init
    public void init()
    {
    // on récupère les paramètres d’initialisation de la servlet
    ServletConfig config = getServletConfig();
    defaultNom = config.getInitParameter("defaultNom");
        if(defaultNom==null)
        {
            defaultNom="XXXXXXXXXXXXXXXX";
        }
        defaultAge = config.getInitParameter("defaultAge");
        if(defaultAge==null)
        {
            defaultAge="AAA";
        }
        defaultCourriel = config.getInitParameter("defaultCourriel");
        if(defaultCourriel==null)
        {
            defaultCourriel="XXXXXX@XXXXXXXX.XX";
        }
    }
    //GET
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws
    IOException, ServletException
    {
    // on récupère les paramètres du formulaire

    String nom = request.getParameter("txtNom");
    if (nom == null)
    {
        nom = defaultNom;
    }
    String age = request.getParameter("txtAge");
    if (age == null)
    {
        age = defaultAge;
    }
    String courriel = request.getParameter("txtCourriel");
    if (courriel == null)
    {
        courriel = defaultCourriel;
    }
    // on affiche le formulaire
    response.setContentType("text/html");
    PrintWriter out=response.getWriter();
    out.println
    (
        "<html>" 
        "<head>" 
        "<title>Carte d’identité</title>" 
        "</head>" 
        "<body>" 
        "<center>" 
        "<h2>Carte d’identité</h2>" 
        "<form action=’’ method=’post’>" 
        "<table>" 
        "<tr>" 
        "<td>Nom:</td>" 
        "<td><input name=’txtNom’ value=’" nom "’ type=’text’ size=’30’></td>" 
        "</tr>" 
        "<tr>" 
        "<td>Age:</td>" 
        "<td><input name=’txtAge’ value=’"  age  "’ type=’text’ size=’3’></td>" 
        "</tr>" 
        "<tr>" 
        "<td>Courriel:</td>" 
        "<td><input name=’txtCourriel’ value=’" courriel "’ type=’text’ size=’30’></td>" 
        "</tr>" 
        "</table>" 
        "<table>" 
        "<tr>" 
        "<td><input type=’submit’ value=’Envoyer’></td>" 
        "<td><input type=’reset’ value=’Effacer’></td>" 
        "</tr>" 
        "</table>" 
        "</form>" 
        "</center>" 
        "</body>" 
        "</html>"       
    );
    }
    /**
    * @param request la requête HTTP du client
    * @param response la réponse HTTP qu’on va construire
    */
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
    //on passe la main au GET
    doGet(request, response);
    }
}
  

Это мой web.xml файл:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <servlet>
        <servlet-name>CarteIdentite</servlet-name>
        <servlet-class>ca.web.CarteIdentite</servlet-class>
            <init-param>
            <param-name>defaultNom</param-name>
            <param-value>inconnu</param-value>
            </init-param>
            <init-param>
            <param-name>defaultAge</param-name>
            <param-value>XXX</param-value>
            </init-param>
            <init-param>
            <param-name>defaultCourriel</param-name>
            <param-value>inconnu</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
        <servlet-name>CarteIdentite</servlet-name>
        <url-pattern>/CarteIdentite</url-pattern>
    </servlet-mapping>
</web-app>
  

Вот структура моего проекта:

структура проекта

Комментарии:

1. Привет всем, у меня нет папки WEB-INF / classes в структуре проекта. Кроме того, когда я щелкаю правой кнопкой мыши по имени проекта, у меня нет «Пути сборки», спасибо.

2. Вы действительно не видите этого в Project Explorer . Однако вы можете увидеть это в режиме навигатора или просто прямо в месте развертывания файла WAR. Однако это должно произойти автоматически. Вы перестроили проект, повторно опубликовали сервер и перезапустили сервер?

Ответ №1:

Возможно, Eclipse не рассматривается src как исходная папка. Попробуйте щелкнуть по нему правой кнопкой мыши и выбрать Build Path -> Use as source folder .

Ответ №2:

Проверьте ca.web.CarteIdentite , правильно ли скомпилирован класс и попал ли он в войну вашего проекта (в разделе WEB-INF /classes). Если нет, проверьте / исправьте настройки пути сборки проекта.