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 :

Récupérer une variable de session dans une Servlet


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Points : 33
    Points
    33
    Par défaut Récupérer une variable de session dans une Servlet
    Bonjour,

    Dans une application Web, j'utilise des Servlets pour mes gérer mes requêtes bdd.

    Dans le init() de celles-ci, j'ai une ligne de connexion du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AccesBddMySQL accesBdd = new AccesBddMySQL("localhost","base","root","root");
    En fait, je souhaiterais que cette ligne de connexion soit "dynamique", en gros qu'elle utilise le login de la personne et non pas un login fixe ("root" par exemple).

    Ce login est stocké dans une variable de session, et j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String Login = null;
    HttpSession indexSession = request.getSession();
    Login = (String)indexSession.getAttribute("userID");
    AccesBddMySQL accesBdd = new AccesBddMySQL "localhost","base",Login,Login);
    qui ne fonctionne pas...

    Quelqu'un a t-il déjà contourné ce problème et comment ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Est-ce que userID a bien été placé dans la session auparavant ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Oui tout à fait, il a été placé au niveau de la page de connexion.

    Je le récupère d'ailleurs ensuite pour afficher un message d'accueil dans la page principale.

    En fait, si je mets le code dans le doGet ou le doPost, ça va fonctionner.

    Seulement, c'est un peu dommage de placer une connexion bdd dans chaque élément, j'aurais préféré le placer une seule fois dans le init !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    La méthode init(...) est appelée uniquement lors du démarrage du serveur.

    A ce moment là, la notion de session n'existe pas puisque aucun utilisateur n'a pu encore se connecter.

    Je ne vois pas ce qui te dérange tu peux toujours faire un truc comme ça :

    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
    public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
       process(request, response);
    }
    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
       process(request, response);
    }
    
    public void process(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
          String login = (String)request.getSession().getAttribute("userID");
          AccesBddMySQL accesBdd = new AccesBddMySQL "localhost","base",login,login);
          ...
    }

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Effectivement ça fonctionne bien !

    Je débute en Java, et lors de ma récente formation, on m'avait expliqué que la connexion bdd devait se faire dans l'init, d'où ma problèmatique.

    Heureusement je vois qu'il existe différentes solutions, merci à tous pour vos informations.

    Bonne journée.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Généralement, on utilise un seul compte de connexion à la base de donnée.

    Ce compte est dédié à l'application et ne correspond pas à un login utilisateur.

    Dans ce cas, il convient de le déclarer par exemple dans le web.xml et d'initialiser la connexion dans une méthode init(...) au démarrage du serveur.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Oui voilà, c'est ce qu'on m'avait dit.

    Mais les DBA de mon entreprise ne l'entendent pas de cette oreille !

    Ils souhaitent une connexion par utilisateur, et c'est l'origine de ce post.

    Bonne continuation.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/11/2014, 09h38
  2. [Débutant] appeler une variable de session dans une page
    Par cyriane dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/05/2012, 12h16
  3. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  4. Réponses: 0
    Dernier message: 07/11/2008, 14h25
  5. Réponses: 3
    Dernier message: 06/09/2006, 09h06

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