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 :

Passez un servlet en paramètre


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut Passez un servlet en paramètre
    Bonjour,

    Dans ma page index.jsp j'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="MonServlet">Cliquez </a>
    J'aimerais que dés que l'utilisateur clique sur le lien, ca affiche une page jsp
    qui a été definit dans le servlet "Monservlet" .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void doGet(HttpServletRequest requette, HttpServletResponse reponse) throws ServletException, IOException {
     
    getServletContext().getRequestDispatcher((String))params.get("Monformulaire").forward(requette, reponse);
     
    return;
     
    }
    Quand j'execute ce code, ça me retourne une erreur 500 avec un nullPointerException.

    le paramètre Monformulaire est défini dans mon web.xml et pointe vers l'adresse de ma page formulaire.jsp.

    Je doute que le problème est dû à une vérification que je dois faire:
    ex: si l'utilisateur a cliqué sur le lien pointant vers Monservlet, alors dirige le vers la page formulaire.jsp. Est-ce bien ça qui manque ? ou c'est quoi le problème selon vous ?

    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 64
    Points : 78
    Points
    78
    Par défaut
    dans le web.xml, tu dois réaliser l'association nom de la Servlet (nom de classe) et URL d'accès.
    Exemple (dans web.xml):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <servlet>
            <servlet-name>TestServlet</servlet-name>
            <servlet-class>publicServlets.testActionServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>TestServlet</servlet-name>
            <url-pattern>/tonurl</url-pattern>
        </servlet-mapping>
    Ensuite la balise <a href=""> doit donner une URL (absolue comme http://tondomaine/tonurl) ou relative (./tonurl).

    Quand l'utilisateur clique sur le href, son navigateur l'expédie à l'adresse donnée. Et si l'adresse donnée est mappée sur la servlet qui doit répondre, alors c'est bon.

    A priori aucun objet servlet n'est passé en paramètre. Seuls les objets HttpRequest, décrivant une requete d'un client peuvent etre passés d'une servlet à une autre (c'est le dispatch).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par blueman1 Voir le message
    dans le web.xml, tu dois réaliser l'association nom de la Servlet (nom de classe) et URL d'accès.
    Exemple (dans web.xml):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <servlet>
            <servlet-name>TestServlet</servlet-name>
            <servlet-class>publicServlets.testActionServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>TestServlet</servlet-name>
            <url-pattern>/tonurl</url-pattern>
        </servlet-mapping>
    Ensuite la balise <a href=""> doit donner une URL (absolue comme http://tondomaine/tonurl) ou relative (./tonurl).

    Quand l'utilisateur clique sur le href, son navigateur l'expédie à l'adresse donnée. Et si l'adresse donnée est mappée sur la servlet qui doit répondre, alors c'est bon.
    .
    Je trouve que c'est un peux redondant non ?
    Definir l'url à 2 endroits: dans le web.xml et dans la page index.jsp ?

    Il serait pas mieux de faire quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="TestServlet">Cliquez ici</a>
    le "TestServlet" qui lui va être mappé dans mon xml et qui contiendra la vrai url:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <servlet-mapping>
            <servlet-name>TestServlet</servlet-name>
            <url-pattern>/WEB/INF/Formulaire.jsp</url-pattern>
        </servlet-mapping>
    Formulaire.jsp qui est la page que je veux afficher dés qu'on clique sur le lien.

    Pis je pense que je n'aurais pas le choix de remplir ma méthode doGet afin de passer des variables à mon formulaire.jsp.

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("nom", "Dorwin").
    Et dans ma page formulaire.jsp, j'aurais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String nom = request.getAttribute("nom");
     
    Bonjour <%=nom %>
    la variable nom qui contiendra la chaine "Dorwin";

    Qu'est ce t'en pense, et tu vois un peux ce que je veux faire?

    Merci

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ca n'a rien de redondant.

    1) tu défini la servlet en associant un nom symbolique à une classe de type servlet

    2) tu mappe cette servlet à une ou plusieurs pattern d'url

    3) dans le jsp tu pointe vers l'url de ta servlet.


    Quand à ton NPE, soit c'est params qui est null (on ignor d'où il vient après tout), soit y a pas de request dispatcher pour params.get("monformulaire")


    Sinon, dans ton cas, si tu peux préparer des données avant de demander au jsp d'afficher, c'est quelque chose de tout à fait standard. On ferait


    getServletContext().getRequestDispatcher("/WEB-INF/jsp/formulaire.jsp").forward(requette, reponse);

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Ok ça marche, merci bien.

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

Discussions similaires

  1. Servlet : les paramètres
    Par renarde dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 08/10/2009, 17h04
  2. Réponses: 3
    Dernier message: 20/02/2006, 17h28
  3. Paramètres passés à une servlet
    Par mandarindi dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/09/2004, 16h42
  4. [jsp][servlet]passage de paramètre entre deux frames
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2004, 12h14
  5. [servlet] paramètre...
    Par yass dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/04/2004, 12h23

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