web-dev-qa-db-fra.com

la ressource demandée par tomcat () n'est pas disponible

je sais que c'est une question très commune car je trouve de nombreuses questions à ce sujet dans plusieurs forums, y compris SO. mais je n'ai pas encore trouvé de solution mon web.xml (situé dans WEB-INF)

<?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/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SMSProjectNew</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>ReceiveMessagesServlet</display-name>
    <servlet-name>ReceiveMessagesServlet</servlet-name>
    <servlet-class>com.sendreceive.ReceiveMessagesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ReceiveMessagesServlet</servlet-name>
    <url-pattern>/ReceiveMessagesServlet</url-pattern>
  </servlet-mapping>
</web-app>

la page html index.html, située dans le dossier WebContent 

<!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>Insert title here</title>
</head>
<body>
The application started successfully version 1:27
<form action="/ReceiveMessagesServlet" method="post">
<input type="text" name="number"/>
<input type="text" name="message"/>
<input type="submit" name="submit"/>
</form> 
</body>
</html>

enfin, le servlet ReceiveMessagesServlet situé dans le paquet src\com.sendreceive com.sendreceive;

import Java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

   public class ReceiveMessagesServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public ReceiveMessagesServlet() {
        super();
        // TODO Auto-generated constructor stub
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request,response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request,response);
    }

    protected void processRequest(HttpServletRequest request,
            HttpServletResponse response) {
        String responseMessage = request.getParameter("message");
        String responseNumber = request.getParameter("number");
        System.out.println(responseMessage+responseNumber);
    }

}

j'ai installé le plugin Tomcat dans Eclipse. Quand je fais un clic droit sur le projet, puis cliquez sur Exécuter le projet sur le serveur. Le serveur Tomcat démarre dans Eclipse et la page index.html apparaît. Mais lorsque je saisis des valeurs dans les champs et que je clique sur Envoyer, il donne l'erreur 404, j'ai déjà eu de la difficulté à m'aider depuis deux heures. aussi..fyi, j'utilise ce tutoriel http://www.ibm.com/developerworks/opensource/library/os-Eclipse-Tomcat/index.html

9
i_raqz

Vous obtenez 404 erreur en raison de l'action = "/ ReceiveMessagesServlet", veuillez supprimer la barre oblique. Essayez avec action = "ReceiveMessagesServlet". 

Lorsque vous ajoutez une barre oblique au modèle d'URL, le conteneur recherche une application Web déployée avec le nom "ReceiveMessagesServlet". En l'absence de cette erreur, vous recevrez une erreur 404. 

11
donatello

Lorsque vous déployez votre application dans un conteneur de servlets, vos URL peuvent être préfixées par le chemin de contexte identifiant votre application parmi les autres applications de ce conteneur (c'est-à-dire que /ReceiveMessagesServlet devient /MyApp/ReceiveMessagesServlet).

Par conséquent, vous devez prendre en compte cette possibilité et modifier vos URL en conséquence, par exemple avec le <c:url> de JSTL:

<form action="<c:url = value = '/ReceiveMessagesServlet' />" method="post"> 

Alternativement, sans JSTL:

<form action="${pageContext.request.contextPath}/ReceiveMessagesServlet" method="post"> 
7
axtavt

Des erreurs dans votre servlet peuvent amener Tomcat à le marquer comme indisponible, comme je l'ai eu dans le journal de mon serveur:

06/02/2013 13:32:43 org.Apache.catalina.core.ApplicationContext log INFO: Marquer l'imageur de servlet comme indisponible 06/02/2013 13:32:43 Org.Apache .catalina.core.StandardWrapperValve appelle SEVERE: exception Allocate pour le servlet imageur Java.lang.ClassNotFoundException avec com.project.test.ImageThumber.

Vous devriez regarder le journal pour des raisons. Dans mon cas, un bocal manquant avec certaines classes de test.

0
cavila