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 :

[Débutant - Avis] même variable dans plusieurs pages...


Sujet :

Servlets/JSP Java

  1. #1
    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 [Débutant - Avis] même variable dans plusieurs pages...
    Salut tout le monde, z'allez bien ?

    J'aimerais avoir votre avis en ce qui le meilleur méthode à utiliser pour afficher le contenu d'une même variable dans plusieurs page ?

    Exemple tout bête :
    _J'ai un formulaire qui demande le nom et le mot de passe de l'utilisateur et qui les envoient vers une servlet.
    _La servlet stock le nom et le mdp dans un bean.
    Ensuite si le nom et le mdp sont bons alors on renvoi vers une page d'accueil (jsp) où il y aurait écrit : Bienvenue "nomdelutilisateur" ... jusque là y'a pas de probleme...
    Maintenant si dans cette même page d'accueil il y a un lien vers une autre page jsp (sans passer par un servlet) où il y aurait ecrit : Comment ca va "nom" ?
    Comment pourrais-je m'y prendre ??? dois-je faire des get et set attribute à chaque fois ??? ce n'est pas trop lourd ? Qu'elle est la meilleur technique à utiliser ? (en évitant strut et ejb, ce sont des choses que j'aimerais voir beaucoup plus tard).
    Bien sur c'est un exemple fictif mais qui permetterais d'y voir un petit peu plus clair.

    Merci d'avance !!!!

    ++
    ShinJava


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

    petit débutant deviendra grand... débutant

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Il te suffit de placer ton bean dans la session de l'utilisateur...
    C'est fait pour ca

    a++

  3. #3
    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
    Merci de m'avoir répondu.
    Je suis pas encore ami-ami avec les termes techniques (j'ai lu pas mal de tutos en anglais), mais que veut tu dire par "placer dans la session de l'utilisateur" ?

    Comme ca ? :

    // Nouvelle Instance (UserID) de la bean User
    User UserID = new User();
    UserID.setUserName((String) request.getParameter("Name"));
    UserID.setPassword((String) request.getParameter("Password"));

    HttpSession session = request.getSession();
    session.setAttribute("UserID",UserID);
    Merci d'avance
    ++
    ShinJava

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

    petit débutant deviendra grand... débutant

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Salut,

    Facile tu scopes ta variable...Je m'explique:
    En jsp t'a la possibilite de definir la portee de tes variables, il y en a 3 (a ma connaissance) qui sont des variables predenies de Jsp:

    - pageContext : la variable est uniquement situe dans la page courante affiche.
    - session : les variables de session pour se souvenir de choses (par exemple utilisateur logge). Toutes ces variables de session sont detruites si tu fais session.invalidate()
    - applicationContext : toutes les variables que tu mets a l'interieur reste valable pendant toute la duree de vie de l'application, en gros tant que tu ne ferme pas ton navigateur ou que tu reste sur ton site web les variables seront toujours presentes.

    Maintenant voici le code qui t'interesse pour faire ce que tu veux faire. Dans ta servlet tu ecris le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MaServlet extends HttpServlet{
       ....
       public void doPost(...) throws ServletException,IOException{
           ServletContext application = getServletContext();
           // tu recupere le nom de l'utilisateur nom_utilisateur dans ton formulaire
            application.setAttribute("nom",nom_utilisateur);
       }
     
       ....
    }
    Ensuite dans toute tes page JSP t'auras plus qu'a faire pouyr recuperer le nom de l'utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%
       String nom = (String) applicationContext.getAttribute("nom");
    %>
    Bien sur si t'as compris le truc que j'ai raconte au dessus ce nom sera valable dans toute l'application. Si tu veux que ce soit specifique a un utilisateur, utilise la variable predefinie session.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MaServlet extends HttpServlet{
       ....
       public void doPost(...) throws ServletException,IOException{
           HttpSession session = request.getSession();
           // tu recupere le nom de l'utilisateur nom_utilisateur dans ton formulaire
            session.setAttribute("nom",nom_utilisateur);
       }
     
       ....
    }
    Ensuite dans toute tes page JSP t'auras plus qu'a faire pouy recuperer le nom de l'utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%
       String nom = (String) session.getAttribute("nom");
    %>

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Quelques rectifications sur le post de bluefox_du_974 :

    Il y a 4 scopes différents :
    • page : L'objet est valide seulement pendant la JSP courante (à la fin de la JSP il est détruit).
      request : L'objet est valide pendant tout le cycle de la requête (Servlet + JSP).
      session : L'objet est lié à l'utilisateur (la session est retrouvé grâce aux cookies). Il est détruit après un certains délai sans nouvelle action de l'utilisateur (30min en général mais c'est paramétrable).
      application : Le scope est valide pendant toute l'exécution du serveur. Les objets sont donc détruit lorsque tu les supprimes explicitement ou que tu arrêtes le serveur. De plus ce scope est partagé par tous les utilisateurs...


    Le fait de fermer le navigateur n'a aucun effet sur le serveur, et en particulier sur le scope application.
    Le seul effet c'est que si l'utilisateur se reconnecte sur le site un nouveau cookie et donc une nouvelle session lui sera attribué...

    Enfin, le scope application ne doit pas être utilisé pour stocker des informations propre à un utilisateur étant donné qu'il est partagé par tous les utilisateurs...

    a++

  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
    Re,
    Merci à vous deux pour les explications sur les 4 scopes différents (ca va me servir).
    bluefox_du_974 merci, c'est exactement le résultat que je voulais obtenir.

    Sinon, mon bean ne sert plus à rien dans ce cas-ci ?c'est pas mieux avec les bean du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <jsp:useBean id="UserID" scope="session" class="User"/>
    <jsp:getProperty name="UserID" property="UserName"/>
    Est-ce qu'on y gagne en performance ?

    Et a propos de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HttpSession session = request.getSession();
    Cela signifie qu'on attribue la variable "session" à la session HTTP de l'utilisateur que la servlet à chopper ? ... je sais que ma question peut paraitre bête mais j'essaye de comprendre... je suis pas encore assez experimenté.

    Merci d'avance
    ++
    ShinJava

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

    petit débutant deviendra grand... débutant

  7. #7
    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
    Bon bon voila ce que j'ai fait pour les bean :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    User UserID = new User();
    UserID.setUserName((String) request.getParameter("Name"));
    UserID.setPassword((String) request.getParameter("Password"));
    session.setAttribute("UserID", UserID);
     
    HttpSession session = request.getSession();
    session.setAttribute("UserID", UserID);
    Et dans la JSP je l'appel de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <jsp:useBean id="UserID" scope="session" class="monk.User"/>
    Bienvenue <%= UserID.getUserName() %>
    Là c'est ok tout fonctionne. C'est bien comme ca qu'il faut faire ?
    Mais la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <jsp:getProperty name="UserID" property="UserName"/>
    Ca ne fonctionne pas , why ?
    Merci d'avance

    ShinJava

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

    petit débutant deviendra grand... débutant

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

Discussions similaires

  1. [Débutant] Comment faire appel à une même fonction dans plusieurs page web ?
    Par Mikounours dans le forum ASP.NET
    Réponses: 6
    Dernier message: 05/03/2013, 15h52
  2. [Lazarus] Utiliser la même variable dans plusieurs FORM
    Par Yoanben dans le forum Lazarus
    Réponses: 2
    Dernier message: 25/05/2010, 15h26
  3. Réponses: 2
    Dernier message: 12/01/2010, 12h00
  4. Réponses: 3
    Dernier message: 30/05/2008, 09h03
  5. utiliser les mêmes variable dans plusieurs class
    Par hterrolle dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2007, 21h11

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