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 :
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:
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
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.)
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.
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
.