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 :

[Debutant][Tomcat] acces à une servlet impossible .


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 71
    Points
    71
    Par défaut [resolu][Debutant][Tomcat] acces à une servlet impossible .
    Bonjour,

    Je suis en train d'écrire ma premiere servlet. Le principe est que d'une page jsp, je post un formulaire et je route le traitement vers ma servlet.
    Pour ce faire, j'ai placé ma servlet dans web-inf/src/com/servlets/MaServlet.java (le package etant com.servlets)

    Ensuite, j'ai créé un web.xml que j'ai placé dans /Web-inf dan slequel je dis otamment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <servlet-class>com.servlets.MaServlet</servlet-class>
    et dans le code de ma page JSP, j'ai l'en-tete de forumaire suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <FORM action="/com/servlets/MaServlet"  method="post">
    Malheureusement, quan je clique sur le bouton submit de ma page jsp, j'ai droit au mesage suivant :
    La ressource demandée (/com/servlets/ServletAddDegree) n'est pas disponible.
    Est ce que quelqu'un pourrait m'expliquer ou j'ai un probleme ?

    Merci d'avance

  2. #2
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Salut,
    Je te conseil un peu de regarder les exemples de Tomcat, voir comment c'est construit et tout au niveau des repertoires.
    Pour ma part, j'ai fait comme eux.
    Mes classes se trouve dans le repertoire :
    WEB-INF\classes\

    Ensuite au niveau de ton web.xml il manque quelque chose, tu dois definir le nom de la classe . C'est bien de definir le chemin, mais faut aussi indiquer le nom :
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <servlet>
      <servlet-name>MaServlet</servlet-name> 
      <servlet-class>com.servlets.MaServlet</servlet-class> 
      </servlet>
    Il faut aussi definir l'url mapping pour ton site (le chemin dans la barre d'adresse si tu veux) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <servlet-mapping>
      <servlet-name>MaServlet</servlet-name> 
      <url-pattern>/MaServlet</url-pattern> 
      </servlet-mapping>
    En gros avec le code ci-dessus tu devra rediriger ta requete vers ta servlet en passant par http://localhost/NomDuProjet/MaServlet
    Enfin bon tu as encore des petites choses à voir.

    En esperant que ca t'aidera ! (regarde bien comment sont construit les exemple dans tomcat (repertoire, web.xml), c'est d'une grande utilité)

    Bon courage !!

    ++
    ShinJava

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par ShinJava
    Salut,
    Je te conseil un peu de regarder les exemples de Tomcat, voir comment c'est construit et tout au niveau des repertoires.
    Pour ma part, j'ai fait comme eux.
    Mes classes se trouve dans le repertoire :
    WEB-INF\classes\
    En fait, quand tu places une servlet dans le WEB-INF/src, automatiquement au chargement du contaexte, il transfere les infos dans le /classes. J'ai donc bien ma servlet aussi dans /classes.

    Citation Envoyé par ShinJava
    Ensuite au niveau de ton web.xml il manque quelque chose, tu dois definir le nom de la classe . C'est bien de definir le chemin, mais faut aussi indiquer le nom :
    Au temps pour moi ... En fait, j'ai inscrit cette information, mais je l'ai aps repercuté sur ce topic ...

    Et j'ai regardé les exemples Tomcat, et je ne comprend pas plus ou est mon erreur ....

  4. #4
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Ah j'avais mal lu ce que tu avais écrit.
    1/ Fait voir ton fichier web.xml (juste la partie <servlet-mapping>)
    2/ Selon le servlet-mapping de ta classe, tu devras changer ton FORM ACTION.

    Pour mon exemple du dessus ca me donne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <FORM action="http://localhost/NomDuProjet/MaServlet"  method="post">
    ++
    ShinJava

  5. #5
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 71
    Points
    71
    Par défaut
    Ah ben en fait je pensais quele servlet mapping n'etait que optionnel, pour pouvoir pointer sur une servlet en utilisant un alias ...

    Par contre, j'avais pas essayé avec //localhost/.../... mai quand je regarde les exemples tomcat, ils mettent pas de localhost, mais le chemin relatif. Me trompé-je ?

  6. #6
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Alors pour le servlet mapping... je suis pas sur que ca soit optionnel, j'ai toujours fait comme ca, j'essayerais demain sans.
    Enfin pour le localhost, tout depend de ta config, environement etc... Je sais qu'avec Linux j'avais modifié un fichier host et j'ai bien galérer par la suite.
    Alors si tu n'a rien touché des config (tomcat et autres) normalement c'est http://localhost:8080/monsite/MaServlet (tu peux enlever le 8080 si tu as mis le port 80 dans le fichier server.xml de tomcat).
    Tu n'est pas obligé de mettre http:// etc..., juste la fin du chemin devrait suffire comme ta fait dans ton premier exemple.

    Tiens nous au courant !
    ++
    ShinJava

  7. #7
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 71
    Points
    71
    Par défaut
    Bon alors, j'ai rajouté un servlet mapping, ce ki fait que mon web.xml ressemnle a ca :

    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"?>
    <!DOCTYPE web-app SYSTEM "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    	<display-name>Nom de la WebApp</display-name>
    	<servlet>
    		<servlet-name>MaServlet</servlet-name>
    		<display-name>Add a Degree</display-name>
    		<servlet-class>com.servlets.MaServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>MaServlet</servlet-name>
    		<url-pattern>/test</url-pattern>
    	</servlet-mapping>
    </web-app>
    Et quand j'essaie d'accéder à ma servlet en direct (http://localhost:8080/MaWebApp/test) ca marche, mais des que j'essaie de la lancer à partir d'un submit de formulaire, il me dit qu'il ne la trouve pas ...

    Si je recapitule :
    J'ai ma servlet que je stocke dans /WEB-INF/src/com/servlets/MaServlet. Tomcat la transfere automatiquement dans /WEB-INF/classes/com/servlets/MaServlet

    Que dois je mettre dans :
    <FORM action="???" method="post">
    pour que ca fonctionne ?
    J'ai essayé par l'alias du servletmapping, j'ai essayé /com/servlets/MaServlet, j essayé avec http ... Rien ne fonctionne ... Il me dit toujours que la ressource (MaServlet) n'est pas disponible ...

    Please Help Me !!!!

  8. #8
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Citation Envoyé par michaelbob

    Si je recapitule :
    J'ai ma servlet que je stocke dans /WEB-INF/src/com/servlets/MaServlet. Tomcat la transfere automatiquement dans /WEB-INF/classes/com/servlets/MaServlet
    Je suis d'accord. Tu dois surement utiliser netbeans ? moi aussi ca me le fait, j'avais pas remarqué.

    Citation Envoyé par michaelbob
    Que dois je mettre dans :
    <FORM action="???" method="post">
    pour que ca fonctionne ?
    J'ai essayé par l'alias du servletmapping, j'ai essayé /com/servlets/MaServlet, j essayé avec http ... Rien ne fonctionne ... Il me dit toujours que la ressource (MaServlet) n'est pas disponible ...
    Essaye avec ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <FORM action="http://localhost:8080/MaWebApp/test"  method="post">
    ++
    ShinJava

  9. #9
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par ShinJava

    Essaye avec ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <FORM action="http://localhost:8080/MaWebApp/test"  method="post">
    ++
    ShinJava
    Voila le message d'erreur que j'ai maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La méthode HTTP spécifiée n'est pas autorisée pour la ressource demandée (La méthode HTTP POST n''est pas supportée par cette URL).

  10. #10
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Ca donne quoi avec la méthode get ?

    Edit : du coup faudrat changer une ligne dans ta servlet au lieu de
    public void doPost(HttpServletRequest etc... il faudra mettre
    public void doGet(HttpServletRequest

  11. #11
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Points : 71
    Points
    71
    Par défaut
    Ca y est ca parche ... en fait lamethode de ma servlet etait uniquement doGet, alors qu'il fallait justement un doPost ... D'ailleurs, le emssage d'erreur devient comprehensible ...

    Sur ce, je trouve ca toujours bizarre que je doive mettre http://localohost:8080/.... pour que ca marche ....

  12. #12
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Salut,
    Ok, donc cela venait tout simplement de la méthode de la servlet.

    En quoi tu trouve bizzare qu'il faut mettre localhost:8080 ? c'est le port qui te gène ? A la place de localhost, tu peux tres bien mettre ton IP ou le nom de domaine rattaché à l'ip.

    Ou bien c'est peut du FORM ACTION que tu parles ? dans ce cas essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <FORM action="/MaWebApp/test"  method="post">
    ou
    <FORM action="MaWebApp/test"  method="post">
    Je sais plus c'est lequel ? (j'ai pas la possibilité de tester maintenant)... Tu pourras me dire lequel des 2 fonctionne ste plé.

    ++
    ShinJava

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accès à une servlet depuis une machine distante
    Par luminatis dans le forum Tomcat et TomEE
    Réponses: 10
    Dernier message: 07/01/2012, 14h40
  2. [POO] Accès à une variable impossible!
    Par k o D dans le forum Langage
    Réponses: 34
    Dernier message: 25/11/2008, 15h17
  3. Accès à une servlet depuis une JSP
    Par j.roc dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/11/2007, 13h57
  4. [TomCat] - Compiler une Servlet avec Eclipse
    Par spidetra dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/12/2005, 15h26
  5. [Tomcat]Droit d'accès aux fichiers créés par une servlet
    Par loulouleboss dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 15/07/2004, 14h32

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