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

Servlets/JSP Java Discussion :

Appel de servlet depuis une autre servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Points : 40
    Points
    40
    Par défaut Appel de servlet depuis une autre servlet
    Bonjour à tous,
    Je viens de me remettre au JAVA et notamment au JEE, et je me fais quelques petits essais avant de me lancer dans un projet perso plus conséquent.

    Le pépin c'est que je ne parviens pas à appeler une servlet depuis une autre servlet...
    Je m'explique: je fais juste un vérification toute bête login/password dans un bloc if/elseif pour orienter la navigation...
    En cas d'erreur, pas de problème, je reviens bien toujours au formulaire de connexion avec un message d'erreur pour l'utilisateur, mais quand c'est bon, le programme ne plante pas mais je me retrouve avec une page blanche et surtout l'url qui n'a pas changé. Donc pas redirection vers une servlet dédiée à mon accueil...
    Je vous mets le bout de code qui appelle la servlet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (id.equals("admin") && psw.equals("admin")) {
    			request.setAttribute("messerreur", messerreur);
    			System.out.println("avant dispacher accueilStaff...");
    			getServletContext().getRequestDispatcher("/AccueilStaff").forward(request, response);
    Maintenant le doGet de la servlet qui est censée gérer l'appel et afficher une page d'accueil:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println("test dans doGet AccueilStaff...");
    		this.getServletContext().getRequestDispatcher("/WEB-INF/acueilstaff.jsp").forward(request, response);
    	}
    La faute d'orthographe (un seul c dans acueilstaff.jsp) est normale, le fichier s'appelle bien comme ça...
    Et enfin mon fichier web.xml pour le mapping de mes servlets:

    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
    30
    31
     
    <display-name>Festival_Moto</display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <servlet>
        <servlet-name>Connexion</servlet-name>
        <servlet-class>com.servlets.Connexion</servlet-class>
      </servlet>
      <servlet>
      	<servlet-name>Accueil</servlet-name>
      	<servlet-class>com.servlets.Accueil</servlet-class>
      </servlet>
      <servlet>
      	<servlet-name>AccueilStaff</servlet-name>
      	<servlet-class>com.servlets.AccueilStaff</servlet-class>
      </servlet>
     
     
      <servlet-mapping>
        <servlet-name>Connexion</servlet-name>
        <url-pattern>/Connexion</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      	<servlet-name>Accueil</servlet-name>
      	<url-pattern>/Accueil</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      	<servlet-name>AccueilStaff</servlet-name>
      	<url-pattern>/AccueilStaff</url-pattern>
      </servlet-mapping>

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Points : 40
    Points
    40
    Par défaut re servlet
    Alors,
    J'ai trouver mon erreur...!!! imbécile que je suis !!! Mais je ne le classe pas en tant que "résolu" car j'ai lever un autre lièvre qui me fait bien penser que je n'ai pas tout à fait compris. Je m'explique:

    Mon erreur:
    J'appelle la methode doGet de la servlet "AccueilStaff" depuis la methode doPost de la servlet appelante (Connexion)...
    J'ai donc copié le code du doGet dans le doPost et ça fonctionne!!

    Le truc qui me chiffonne:
    Par contre je constate que dans l'url, c'est toujours /Connexion (l'url de la servlet appelante) qui est présent, or à ce moment là je me trouve dans la servlet "AccueilStaff" dont j'ai mentionné l'url-pattern "/AccueilStaff" dans mon web.xml.
    Je devrais donc être passé de "/Connexion" à "/AccueilStaff" non?
    Ca ne me parait pas bien clair...

  3. #3
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    c'est la différence entre forward (renvoie la requête vers l'autre url, c'est interne au container de servlet, le browser n'est donc pas averti de ce changement, donc pas de changement d'url) et redirect (le container informe le browser d'effectuer une autre requête, donc l'url change)

    cf

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Points : 40
    Points
    40
    Par défaut re servlet
    Ah d'accord... En effet je n'avais pas tout compris!!!
    Je viens de lire ton lien et je comprends bien la différence entre forward et redirect, mais je ne pige pas bien comment se servir de redirect..

  5. #5
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    dans ta méthode doGet/Post, tu utilises simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.sendRedirect("/AccueilStaff");
    fais juste attention au path que tu indiques !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Points : 40
    Points
    40
    Par défaut re servlet
    Ah ok, tu veux dire directement à la place de ça?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.getServletContext().getRequestDispatcher("/WEB-INF/acueilstaff.jsp").forward(request, response);

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Points : 40
    Points
    40
    Par défaut re servlet
    Enfin non, (pas la bonne ligne), à la place de celle là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.getServletContext().getRequestDispatcher("/AccueilStaff").forward(request, response);
    Désolé, je suis allé trop vite dans le copié/collé

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Points : 40
    Points
    40
    Par défaut re servlet
    Bon, super, ça fonctionne impeccable !!!
    Merci Gardyen, je vais tenter de bien appréhender et comprendre cette navigation..
    Le nez dans des tutos et cours divers !!!

    Merci encore.
    Bonne continuation.

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

Discussions similaires

  1. [Windows Phone 8] Appeler un Control depuis une autre page
    Par mano10 dans le forum Windows Phone
    Réponses: 2
    Dernier message: 17/12/2014, 09h04
  2. appelle d'une servlet depuis une autre servlet
    Par Malatok dans le forum Java EE
    Réponses: 1
    Dernier message: 02/07/2012, 17h56
  3. appel d'application depuis une autre application
    Par Cedric G dans le forum Développement iOS
    Réponses: 1
    Dernier message: 05/06/2012, 14h52
  4. Réponses: 2
    Dernier message: 17/05/2011, 19h20
  5. Comment accéder ma servlet depuis une autre machine?
    Par Aldian dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 10/09/2010, 16h48

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