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 :

[Session]Problème de fermeture de session


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Avatar de july
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 98
    Points
    98
    Par défaut [Session]Problème de fermeture de session
    Bonjour à tous,
    Sur mon site les utilisateurs peuvent se loguer et j'aimerai qu'ils puissent se "deloguer".
    Le problème c'est que j'ai une erreur : java pointer null exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private HttpSession session;
    HttpSession session = null;
    this.session = request.getSession(false);
    if(this.session!=null){
    				this.session.invalidate();
    			}
    Et il ne veut pas la méthode invalidate().
    Ou peut etre faut-il utiliser une autre fonction pour fermer une session ?
    Merci par avance

  2. #2
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Ou est ce que tu appelles ce bout de code?

    Pourrais tu montrer l'ensemble du code?
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  3. #3
    Membre régulier
    Avatar de july
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 98
    Points
    98
    Par défaut
    C'est dans une servlet que j'appelle lorsque l'utilisateur clique sur "se deloguer"
    Voila le code de la servlet entière.
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    public class UnloginServlet extends HttpServlet
    {
    	private DispatchManager mngdispatch;
    	private HttpSession session;
     
    	/**
    	 * Initialisation du dispatcher et de la base de données.
    	 */
    	public void init(ServletConfig conf)throws ServletException
    	{
    	    super.init(conf);
    	    // On initialise le dispatch qui nous permettra de rediriger la réponse vers le fichier JSP
    	    mngdispatch = new DispatchManager(this);
    	}
     
    	/**
    	 * Traitement dans le cas d’une requête GET
    	 * Fermeture de la connexion d'un utilisateur
    	 */
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    		throws ServletException, IOException
    	{
    		doPost(request, response);
    	}
     
    	/**
    	 * Traitement dans le cas d’une requête POST
    	 * Fermeture de la connexion d'un utilisateur
    	 */
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    	throws ServletException, IOException
    	{
    		HttpSession session = null;
    		try {
    			// On récupère la session de l'utilisateur
    			this.session = request.getSession(false);
    			// On la met à nul
    			if(this.session!=null){
    				this.session.invalidate();
    			}
    			//On renvoi l'utilisateur vers la page de login
    			request.setAttribute ("titre", "Veuillez vous authentifier avant d'effectuer une action");
    			mngdispatch.setDest("/index.jsp");
    			mngdispatch.send(request,response);		
    		}
    		catch(Exception e){
    			System.out.println(e);
    			e.printStackTrace();
    		}
    	}
     
    }
    Merci !

  4. #4
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,
    // On récupère la session de l'utilisateur
    this.session = request.getSession(false);
    // On la met à nul
    if(this.session!=null){
    this.session.invalidate();
    En mettant this devant l'objet session, tu fais reference à celui qui est declaré au niveau de ta servlet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class UnloginServlet extends HttpServlet
    {
       private DispatchManager mngdispatch;
       private HttpSession session;
    ...
    Et pas à l'objet que tu initialises dans ta méthode doPost:
    HttpSession session = null;
    // On récupère la session de l'utilisateur
    this.session = request.getSession(false);
    // On la met à nul
    if(this.session!=null){
    this.session.invalidate();
    Donc remplace ton code par :
    HttpSession session = null;
    // On récupère la session de l'utilisateur
    session = request.getSession(false);
    // On la met à nul
    if(session!=null){
    session.invalidate();

    Aussi , une regle importante!! il ne faut jamais declarer de variable membre dans un servlet (variable d'un porté global à la servlet) cela peut introduire des comportements bizarre... car je crois qu'une servlet n'est pas declarée ThreadSafe...

    J'espere que cela t'aidera , si tu as des questions , n'hesite pas!!
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  5. #5
    Membre régulier
    Avatar de july
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 88
    Points : 98
    Points
    98
    Par défaut
    Ca marche parfaitement !
    Merci beaucoup je n'y avait pas du tout pensé !!

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

Discussions similaires

  1. [Hibernate][Struts] Fermeture des session hibernate
    Par osopardo dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/08/2005, 17h30
  2. Fermeture de session WndProc()
    Par jamesb dans le forum C++Builder
    Réponses: 15
    Dernier message: 10/02/2005, 17h35
  3. Interception de la fermeture de session
    Par xoris dans le forum C++Builder
    Réponses: 8
    Dernier message: 10/12/2004, 19h50
  4. [JSP] session et fermeture de session
    Par monoeilouais dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 14/04/2004, 16h02
  5. Probleme de redirection apres fermeture de session
    Par soufienne dans le forum ASP
    Réponses: 3
    Dernier message: 08/04/2004, 10h52

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