IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

Erreur Etat HTTP 404 avec Servlet


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut Erreur Etat HTTP 404 avec Servlet
    Bonjour

    J'ai une application JEE qui se trouve dans le webapps de mon Apache Tomcat/7.0.50. J'ai aussi créé une page index.jsp qui se trouve dans le WEB-INF, mais lorsque je tape ceci dans le navigateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8080/MonAppli/accueil
    j'ai l'erreur:

    Etat HTTP 404 - /MonAppli/accueil

    type Rapport d''état

    message /MonAppli/accueil

    description La ressource demandée n''est pas disponible.
    Apache Tomcat/7.0.50
    Voici mon web.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 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">
     
     
    <servlet>
    	<servlet-name>Index</servlet-name>
    	<servlet-class>servlets.Index</servlet-class>
    </servlet>
    <servlet-mapping>
    	<servlet-name>Index</servlet-name>
    	<url-pattern>/accueil</url-pattern>
    </servlet-mapping>
     
    </web-app>
    Et ma Servlet Index.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    package servlets;
     
    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 Index extends HttpServlet {
     
    public static final String VUE = "/WEB-INF/index.jsp";
     
    public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{
    	/* Affichage de la page d'inscription */
    	this.getServletContext().getRequestDispatcher( VUE ).forward( request, response );
    }
    }
    Voici le fichier localhost.2018-06-18.log:

    juin 18, 2018 4:43:53 PM org.apache.catalina.core.ApplicationContext log
    INFOS: ContextListener: contextInitialized()
    juin 18, 2018 4:43:53 PM org.apache.catalina.core.ApplicationContext log
    INFOS: SessionListener: contextInitialized()
    juin 18, 2018 4:43:53 PM org.apache.catalina.core.ApplicationContext log
    INFOS: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@3e21b2b5')
    Je rappelle que la page index.jsp se trouve bien dans le WEB-INF.

    Donc je ne comprends vraiment pas pourquoi il ne la trouve pas.

    Merci

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Dans le principe, c'est bon, il n'y a pas de souci côté code.
    Ton problème pourrait venir du fait que "MonAppli" n'est pas le bon nom, par défaut, il prend le nom du projet (Dynamic Web Project), ce qui engendrerait également une 404.

    Si tu utilises Eclipse, tu fais un click-droit sur le projet -> Properties -> Web Project Settings et vérifie que Context root = MonAppli
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Non je n'utilise aucun IDE, juste tomcat, le bloc-note et ANT, histoire de bien comprendre l'architecture JEE.

    Merci

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Oups !... pas sûr que ce soit la meilleure méthode pour comprendre JEE... c'est suffisamment complexe pour ne pas en rajouter avec ce genre d'exercice "puriste"

    Je n'utilise plus Tomcat depuis des années, je ne me rappelle plus comment ni où est défini le "context root" de l'application.
    Si tu as une page à la racine (WebContent), par exemple index.html, est-ce qu'elle s'affiche en tapant http://localhost:8080/MonAppli/index.html ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Oui quand je ramène index.jsp à la racine et que je lance l'application ou que je tape http://localhost:8080/MonAppli/index.jsp, la page s'affiche.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Du coup, il doit y avoir un problème avec ton déploiement...
    Tu peux déjà voir si tu as bien la classe de la servlet dans /WEB-INF/classes/... sur ton serveur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    En fait après compilation, ma Servlet Index.class se crée dans build/servlets. Dois-je la créer dans le WEB-INF?

    Voici mon fichier build.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?xml version="1.0" ?>
    <project name="MonAppli" default="compile">
     
      <!-- Definition des proprietes du projet -->
    	<property name="projet.sources.dir"    value="src"/>
    	<property name="projet.lib.dir"        value="lib"/>
     
    	<path id="project.classpath">
    		<fileset dir="${projet.lib.dir}">
    			<include name="*.jar"/>
    		</fileset>
    		<pathelement location="${projet.bin.dir}" />
    	</path>
     
    	<target name="compile">
            <!-- création d'un répertoire pour la compilation -->
    		<mkdir dir="build"/>
    		<!-- compilation des sources Java -->
    		<javac srcdir="src" destdir="build">
    			<classpath refid="project.classpath" />
    		</javac>
    	</target>
     
    </project>

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Les classes compilées doivent se trouver dans /WEB-INF/classes, sinon, forcément, il ne voit pas la servlet.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Ok j'ai compilé ma servlet et je l'ai envoyée dans WEB-INF/classes mais toujours le même problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?xml version="1.0" ?>
    <project name="MonAppli" default="compile">
     
      <!-- Definition des proprietes du projet -->
    	<property name="projet.src.dir"    value="src"/>
    	<property name="projet.lib.dir"        value="lib"/>
    	<property name="projet.web.dir"        value="web"/>
     
    	<path id="projet.classpath">
    		<fileset dir="${projet.lib.dir}">
    			<include name="*.jar"/>
    		</fileset>
    		<pathelement location="${projet.bin.dir}" />
    	</path>
     
    	<target name="init">
              <mkdir dir="${projet.web.dir}" />
              <mkdir dir="${projet.web.dir}/WEB-INF" />
              <mkdir dir="${projet.web.dir}/WEB-INF/classes" />
           </target>
     
    	<target name="compile" depends="init">
    		<!-- compilation des sources Java -->
    		<javac srcdir="${projet.src.dir}" destdir="${projet.web.dir}/WEB-INF/classes">
    			<classpath refid="projet.classpath" />
    		</javac>
    	</target>
     
    </project>
    Donc dans mon WEB-INF, j'ai le répertoire classes, et les fichiers index.jsp et web.xml.

  10. #10
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je ne pense pas qu'un client puisse via un url avec une requête (pleine ou partielle valable) accéder directement le contenu de WEB-INF d'où se trouve la page index.jsp. On peut contempler soit une redirection par passer par une autre page d'accueil comme encore nommée index.jsp qui s'est placée dans la répertoire MonAppli/ et qui ré-dirige vers elle (via, je ne sais pas, un response.sendRedirect() par exemple), soit par le mécanisme d'une directive d'"include" faisant pratiquement la même chose.

    Peut-être, essayez de le faire comme ça si vraiment nécessaire ? ou je n'ai rien compris.

  11. #11
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Je pensais pourtant que c'était le principe du mapping d'une servlet dans le web.xml: permettre d'accéder à la servlet en tapant le nom du mapping dans l'url.

  12. #12
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je n'ai pas trop regardé tout ce qu'on a discuté déjà... Si la page dite index.jsp n'est pas conçu comme une page dans le sens de "welcome-file", mais plutôt comme un servlet en lui-même, on peut faire comme ça.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <servlet>
    	<servlet-name>Index</servlet-name>
            <!--
    	<servlet-class>servlets.Index</servlet-class>
    	-->
    	<jsp-file>/WEB-INF/index.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
    	<servlet-name>Index</servlet-name>
    	<url-pattern>/accueil</url-pattern>
    </servlet-mapping>

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/09/2017, 16h51
  2. [MVC] Erreur : Etat HTTP 404 - /learning/create
    Par kanebody dans le forum Spring Web
    Réponses: 2
    Dernier message: 15/07/2014, 17h37
  3. TOMCAT 6.0.18 ERREUR ETAT HTTP 404
    Par hajer_baccouch dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 20/05/2011, 16h56
  4. Erreur Etat HTTP 404
    Par tcharles dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 25/03/2008, 21h43
  5. Tomcat - Servlet - Erreur "Etat HTTP 404"
    Par Doumeasse38 dans le forum Tomcat et TomEE
    Réponses: 16
    Dernier message: 03/05/2006, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo