HTTP Status 404-Servlet [ServletName] n'est pas disponible

le problème : mon index.jsp avec web.xml continue D'aller dans HTTP 404 et 500

J'utilise Tomcat6 .

ça vient de index.jsp:

  <legend>Registration</legend>
  <form action="./register"> <%-- Address from web.xml  --%>
    First name: <input type="text" name="firstName"><br>
    Last name: <input type="text" name="lastName"><br>
    <input type="submit" value="Register">
  </form>

Quand je suis dans l'Inscription :

enter image description here

et j'ai frappé le nom et le nom de famille , je vais dans 404, le message:

statut HTTP 404-Servlet RegistrationServlet n'est pas disponible

type rapport de situation

message Servlet RegistrationServlet n'est pas disponible

description La ressource demandée (Servlet RegistrationServlet n'est pas disponible) n'est pas disponible.

Apache Tomcat / 6.0.35

quoi pensez-vous qu'il la cause de cette erreur ?

la classe RegistrationServlet se trouve sous le fichier RegistrationServlet.java dans le dossier src/coreservlets/

j'ai vérifié sur le web.xml mais il semble être d'accord , mais ici il est (si elle serait utile):

<?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/j2ee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  <servlet>
    <servlet-name>ShowBalance</servlet-name>
    <servlet-class>coreservlets.ShowBalance</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ShowBalance</servlet-name>
    <url-pattern>/show-balance</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>RandomNumberServlet</servlet-name>
    <servlet-class>coreservlets.RandomNumberServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>RandomNumberServlet</servlet-name>
    <url-pattern>/random-number</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>RegistrationServlet</servlet-name>
    <servlet-class>coreservlets.RegistrationServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>RegistrationServlet</servlet-name>
    <url-pattern>/register</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>PrimeServlet</servlet-name>
    <servlet-class>coreservlets.PrimeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>PrimeServlet</servlet-name>
    <url-pattern>/prime</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

j'ai essayé de résoudre ce peu coupable pour les deux derniers jours , mais rien, toute aide serait grandement appréciée .

EDIT:

comme demandé, voici RegistrationServlet

package coreservlets;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class RegistrationServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession();
        synchronized (session) {
            NameBean nameBean = (NameBean) session.getAttribute("name");
            if (nameBean == null) {
                nameBean = new NameBean();
                session.setAttribute("name", nameBean);
            }
            nameBean.setFirstName(request.getParameter("firstName"));
            nameBean.setLastName(request.getParameter("lastName"));
            String address = "/WEB-INF/mvc-sharing/ShowName.jsp";
            RequestDispatcher dispatcher = request
                    .getRequestDispatcher(address);
            dispatcher.forward(request, response);
        }
    }
}

voici aussi l'arbre du projet:

enter image description here

3
demandé sur BalusC 2012-07-02 16:04:10

4 réponses

votre URL est tout à fait correcte. Si L'URL était erronée, vous auriez reçu un message 404 comme suit:

ressource Demandée register n'est pas disponible

mais vous avez eu

Servlet RegistrationServlet n'est pas disponible

cela signifie que le servlet a été trouvé, mais qu'il n'a pas pu être exécuté parce que sa construction et l'initialisation a échoué avec une exception. Sous les couvertures de Tomcat, fondamentalement une des étapes suivantes a échoué:

Servlet servlet = new RegistrationServlet();
servlet.init(servletConfig);
servlet.init();

vous devez lire les journaux du serveur pour cette exception et ensuite corriger le code en conséquence.


bien que votre URL soit parfaitement correcte, elle est sujette à des erreurs et à des changements de contexte. Vous préférez spécifier une URL relative au domaine à la place:

<form action="${pageContext.request.contextPath}/register">

Voir Aussi cette réponse connexe: navigateur ne peut pas accéder/trouver des ressources relatives comme CSS, des images et des liens lors de l'appel d'un Servlet qui fait suivre à un JSP

4
répondu BalusC 2017-05-23 12:01:18

Err... c'est évident, mais C'est RegistrationServlet.class in/WEB-INF/classes/coreservlets/? Avez-vous de la compilation? (Avec Tomcat, avez-vous besoin de compiler explicitement? Il serait surprenant si vous n'avez pas.)

0
répondu Joseph Ottinger 2012-07-02 12:08:13

il se peut que le chemin d'enregistrement ne tienne pas compte du chemin de contexte. Une bonne façon de corriger cela serait d'utiliser la balise d'url du noyau jstl -

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
...
<c:url value="/register" var="url">
<form action="${url}">

cela assurera que si votre chemin de contexte est ajouté à l'url.

0
répondu Biju Kunjummen 2012-07-02 12:32:15

si une erreur s'est produite lors de l'instanciation de servlet, nous obtiendrons ce type d'erreur, même si les bibliothèques manquent dans le dossier WEB-INF\lib . Assurez-vous que toutes les bibliothèques sont placées dans WEB-INF\lib .

0
répondu ramesh 2013-12-20 15:18:17