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 :

Lien entre Servlet et JSP


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut Lien entre Servlet et JSP
    J'écris une application web en JAVA et pour celà j'utilise ECLIPSE JEE.
    Mon problème est que je n'arrive pas à recupérer les données de ma servlet dans ma page JSP.
    Voici comment j'effectue le transfert dans ma servlet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    request.setAttribute("nom",nom);
    request.setAttribute("age",age);
    getServletContext().getRequestDispatcher("/formulaire2.jsp").forward(request,response);
    Et voici comment je récupère ces paramètres dans ma JSP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <%
    String nom=(String)request.getAttribute("nom");
    String age=(String)request.getAttribute("age");
    %>
    J'enregistre mes JSP dans le repertoire webcontent et mes servlets dans le package par défaut dans le repertoire src.
    Mais celà ne marche pas. A quoi celà est-il dû? Aidez moi SVP

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Si tu veux de l'aide, il faudrait donner plus de précisions.
    Tu dis que ça ne fonctionne pas mais tu ne dis pas ce qui se passe exactement.
    Les valeurs que tu récupères sont-elles nulles ?
    As-tu un message d'erreur ? si oui, poste-le.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Je ne reçoit aucun message d'erreur. Seulement lorsque je veux récupérer les valeurs des paramètres dans ma JSP,il affiche des valeurs NULL. Donc je me dis que la liaison entre la JSP et la servlet n'a pas marché,c'est pour celà que les variables transmises affichent des valeurs Null.

  4. #4
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Mais quand tu mets nom et age dans le scope request via ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    request.setAttribute("nom",nom);
    request.setAttribute("age",age);
    tu es sûr que nom et age sont différents de null ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Oui je leur affecte des valeurs par défaut. Voici le code intégral de ma servlet

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    import java.io.IOException;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class ServletFormulaire2 extends HttpServlet {
    // paramètres d'instance
    private String defaultNom = null;
    private String defaultAge = null;
    //init
    public void init() {
    // on récupère les paramètres d'initialisation de la servlet
    ServletConfig config = getServletConfig();
    defaultNom = config.getInitParameter("defaultNom");
    if(defaultNom==null) defaultNom="NNNNNNNNNNNNNNN";
    defaultAge = config.getInitParameter("defaultAge");
     
    if(defaultAge==null) defaultAge="AAA";
    }
    //GET
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
    ServletException {
    // on récupère les paramètres du formulaire
    String nom = request.getParameter("txtNom");
    if (nom == null) {
    nom = defaultNom;
    }
    String age = request.getParameter("txtAge");
    if (age == null) {
    age = defaultAge;
    }
    // on affiche le formulaire
    request.setAttribute("nom",nom);
    request.setAttribute("age",age);
    getServletContext().getRequestDispatcher("/formulaire2.jsp").forward(request,response);
    } //GET
    //POST
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
    ServletException {
    // on passe la main au GET
    doGet(request, response);
    }
    }
    Et dans le fichier web.xml j'ai défini les variables defaultAge et defaultNom

  6. #6
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Si nom et age sont égaux à null, cela signifie que la méthode init n'est pas exécutée.

    Comment appelles-tu la servlet ? via l'url dans la barre d'adresse ou lors du submit du formulaire ?

  7. #7
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Points : 74
    Points
    74
    Par défaut
    pour s'assurer qu'il ne s'agit pas d'un probléme de communication JSP/servlet:

    ajoutez dans votre code du servlet cela (la modification est en gras):

    ....
    String nom = request.getParameter("txtNom");
    if (nom == null) {
    nom = defaultNom;
    }
    System.out.println(nom);
    ....// la suite

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    J'ai inséré la ligne en question dans la servlet,mais sur ma page web rien ne s'affiche au clic du bouton Submit ni dans la console JAVA non plus.
    Voici le code de ma page JSP:
    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
    32
    33
    34
    35
    <%
    // on récupère les valeurs nécessaire à l'affichage
    String nom=(String)request.getAttribute("nom");
    String age=(String)request.getAttribute("age");
    %>
    <html>
    <head>
    <title>Personne - formulaire</title>
    </head>
    <body>
    <center>
    <h2>Personne - formulaire</h2>
    <hr>
    <form action="" method="post">
    <table>
    <tr>
    <td>Nom</td>
    <td><input name="txtNom" value="<%= nom %>" type="text" size="20"></td>
    </tr>
    <tr>
    <td>Age</td>
    <td><input name="txtAge" value="<%= age %>" type="text" size="3"></td>
    </tr>
    </table>
    <table>
    <tr>
    <td><input type="submit" value="Envoyer"></td>
    <td><input type="reset" value="Rétablir"></td>
    <td><input type="button" value="Effacer"></td>
    </tr>
    </table>
    </form>
    </center>
    </body>
    </html>

  9. #9
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Pour que la servlet s'exécute lors du clic sur le bouton submit, il faudrait spécifier l'url de la servlet (soit celle que tu as codé dans la balise url-pattern dans le web.xml) dans l'attribut action de la balise form.
    Et il faut y ajouter le contexte de l'application.

    Soit tu le codes en dur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="/ContexteDeTonAppli/urlDeLaServlet" method="post">
    Soit tu utilises la méthode getContextPath() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="<%=request.getContextPath()%>/urlDeLaServlet" method="post">

  10. #10
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Points : 74
    Points
    74
    Par défaut
    normelement, il s'affiche dans la console au mois "null" n'est ce pas..??? verifiez bien l'affichage dans la console d'eclipse, juste aprés ce message:
    "INFO: Server startup in 702 ms".

    à mon avis il n'a rien avoir avec la jsp ni le formulaire !!; peut étre le paramétre "defaultNom" ne correspond pas exactement au parametre dans la méthode:config.getInitParameter("defaultNom");

    poster leweb.xml;( selement les lignes qui concernent "ServletFormulaire2" comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <servlet>
       ....
    <init-param>
    <param-name>????</param-name>
    <param-value> ????</param-value>
    </init-param>
        ....
      </servlet>

  11. #11
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Pour que la servlet s'exécute lors du clic sur le bouton submit, il faudrait spécifier l'url de la servlet (soit celle que tu as codé dans la balise url-pattern dans le web.xml) dans l'attribut action de la balise form.
    Et il faut y ajouter le contexte de l'application.

    Soit tu le codes en dur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="/ContexteDeTonAppli/urlDeLaServlet" method="post">
    Soit tu utilises la méthode getContextPath() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="<%=request.getContextPath()%>/urlDeLaServlet" method="post">
    tout a fait:
    je n'ai pas fait attention au : <form action="" method="post">;
    l'attribut action ne doit pas étre vide !!
    éssayez avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="ServletFormulaire2" method="post">
    ;

  12. #12
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    J'ai essayé avec ceci:
    <form action="<%=request.getContextPath()%>/D:\workspace\Impot\build\classes\ServletFormulaire2.class" method="post">
    Au clic du bouton Submit, il signale que ce fichier n'est pas disponible pourtant c'est le repertoire exact ou est stockée ma servlet.
    J'ai essayé avec ceci:
    <form action="<%=request.getContextPath()%>/ServletFormulaire2.class" method="post">
    Au clic du bouton Submit il me demande de télécharger le fichier ServletFormulaire2.
    Voici le code de mon fichier web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlnssi="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">
    <servlet>
    <servlet-name>formulairepersonne2</servlet-name>
    <servlet-class>D:\workspace\Impot\build\classes\ServletFormulaire2</servlet-class>
    <init-param>
    <param-name>defaultNom</param-name>
    <param-value>inconnu</param-value>
    </init-param>
    <init-param>
    <param-name>defaultAge</param-name>
    <param-value>XXX</param-value>
    </init-param>
    </servlet>

    <servlet-mapping>
    <servlet-name>formulairepersonne2</servlet-name>
    <url-pattern>/formulaire2</url-pattern>
    </servlet-mapping>
    </web-app>

  13. #13
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Sorry davoir envoyé tout les codes

  14. #14
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par lawamic Voir le message
    Sorry davoir envoyé tout les codes
    vu le url-pattern utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <url-pattern>/formulaire2</url-pattern>
    essayer avec le code ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="formulaire2" method="post">

  15. #15
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    A présent il signale cette erreur:
    type Rapport d'�tat
    message Servlet formulairepersonne2 n'est pas disponible.
    description La ressource demand�e (Servlet formulairepersonne2 n'est pas disponible.) n'est pas disponible.


    --------------------------------------------------------------------------------

    Apache Tomcat/6.0.18

  16. #16
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup ça a marché mais il a fallu que je recopie ma Servlet dans le même repertoire que le fichier web.xml. Merci donc. Mais ce qui manque à présent c'est qu'il reconnait les valeurs quand je clique sur Submit,comment faire pour qu'il reconnaissent les valeurs par défaut que j'ai défini dans web.xml dès l'initialisation de la page JSP

  17. #17
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Points : 74
    Points
    74
    Par défaut
    je me demande si vous avez coder web.xml à la main ou utilisé celui généré par Eclipse?? si vous l' avez codé à la main alors: changez cette ligne (dans le web.xml) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <servlet-class>D:\workspace\Impot\build\classes\ServletFormulaire2</servlet-class>
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <servlet-class>ServletFormulaire2</servlet-class>

  18. #18
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Oui c'était une erreur et quand j'ai changé que ça marché!Mais il a fallu que je mette la servlet et le fichier xml dans le même repertoire.Celà est il obligatoire??? Aussi comment puis je faire maintenant utiliser les valeurs des paramètres d'initialisation?

  19. #19
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    OK tout marche bien à présent, j'ai remis la servlet dans son repertoire d'origine mais ça marche toujours.J'arrive également à récupérer les paramètres d'initialisation.Merci encore

  20. #20
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Points : 74
    Points
    74
    Par défaut
    ajoutez un code qui ressemble à ceci (dans votre page jsp) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <%!
    public void jspInit() {
    ServletConfig config = getServletConfig();
    String parametre = config.getInitParameter(“????”);
    ....
    ....
    }
    %
    et n'oubliez pas de configurer la jsp dans votre Web.xml (presque la méme chose que la servlet sauf ajoutez :<jsp-file> à la place de: <servlet-class>) en utilsant le tag:<jsp-file> comme indiqué ci-dessous:

    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
    ....
    <servlet>
    <servlet-name>nom_quelconque</servlet-name>
    <jsp-file>/ta_page_JSP.jsp</jsp-file>
    <init-param>
    <param-name>defaultNom</param-name>
    <param-value>inconnu</param-value>
    </init-param>
    <init-param>
    <param-name>defaultAge</param-name>
    <param-value>XXX</param-value>
    </init-param>
    </servlet>
    
    <servlet-mapping>
    <servlet-name>nom_quelconque</servlet-name>
    <url-pattern>/Teste.jsp</url-pattern> // (Teste.jsp) c'est un exemple vous pouvez le changer par n'importe quelle autre chaine de caractére
    </servlet-mapping>
    ....
    j'espére que cela va t'aider. tester le et bonne chance

Discussions similaires

  1. Différences entre Servlet et JSP
    Par mamiberkof dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 21/01/2016, 15h48
  2. Liens entre Servlet et JSP pour récupérer infos BD et XML
    Par paladice dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 31/03/2013, 20h03
  3. lien entre 2 pages .jsp sans formulaire à envoyer
    Par mennou dans le forum Struts 1
    Réponses: 15
    Dernier message: 15/05/2008, 11h55
  4. liaison entre servlet et jsp
    Par ouadie99 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/10/2007, 22h23
  5. vecteur entre servlet et JSP
    Par Mickael Scofild dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 11/08/2007, 12h39

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