2016-05-19 3 views
1

Nous utilisons le tomcat pour notre application web et pour la gestion de la session que nous utilisons dans HttpSession Javax.servlet.http.HttpSessionHttpSession dans tomcat

Voilà comment nous fixons la session Id et quelques attributs utilisateur dans httpsession

HTTPSession session = request.getSession() 
session.setAttribute("sessionIdNo",sessionIdNo); 

Voici comment Nous obtenons l'identifiant de session et quelques attributs utilisateur stockés dans un appel HTTP précédent.

Session HTTPSession = request.getSession(); session .getAttribute ("sessionIdNo");

Ma question est

  1. Comment il est possible que, dans le prochain appel HTTP à partir du navigateur, nous sommes en mesure d'obtenir l'attribut de session côté serveur qui est défini dans les précédents appels HTTP httpsession.

    NOTE: Je n'ai pas enregistré dans les cookies aussi, je crois que ce n'est pas envoyé par mon navigateur. Possède-t-il une connexion à JSESSION_ID? Si oui, ma deuxième question est, Comment fonctionne cette gestion de session HTTP dans les applications de bureau que je veux dire sans utiliser le navigateur? Je veux dire comment utiliser JESSION_ID ici pour la gestion de session.

  2. Sinon, quelle est l'autre façon?

Répondre

1

HttpSession implique l'utilisation de, bien, HTTP. Dans votre navigateur, le cookie JSESSIONID est utilisé pour référencer la session. Un utilisateur arrive la première fois et se voit attribuer un nouvel identifiant de session (request.getSession(). GetId()). Ceci est mis dans le cookie JSESSIONID et renvoyé au navigateur. Lors de requêtes ultérieures, le navigateur envoie le cookie qui indique à Tomcat quelle session utiliser.

Si vous avez créé une application de bureau, vous pouvez utiliser un mécanisme différent. Mais Tomcat est, en partie, un serveur HTTP et c'est donc le mécanisme "normal". Une application de bureau peut toujours interagir avec Tomcat et les services Web, mais son interface utilisateur sera probablement rendue, par exemple, par Java Swing.

EDIT

Vous pouvez regarder les sessions créées et détruites avec juste un peu de code:

import javax.servlet.annotation.WebListener; 
import javax.servlet.http.HttpSessionEvent; 
import javax.servlet.http.HttpSessionListener; 

@WebListener 
public class DemoSessionListener implements HttpSessionListener { 

    @Override 
    public void sessionCreated(HttpSessionEvent sessionEvent) { 
     System.out.println("session \"" + sessionEvent.getSession().getId() + 
          "\" created); 
     } 
    } 

    @Override 
    public void sessionDestroyed(HttpSessionEvent sessionEvent) { 
     System.out.println("session \"" + sessionEvent.getSession().getId() + 
          "\" destroyed); 
    } 
} 
+0

Si je lance l'appel HTTP en utilisant la commande boucle encore, il est en mesure d'utiliser le même HttpSession dans prochain appel. Comment est-ce possible? Comment mon HttpSession utilise la même session dans l'appel suivant. Je n'ai pas non plus passé de champ de saisie dans les cookies. – Harry

+0

Comment êtes-vous sur que c'est la même session? Il semble que curl n'active pas les cookies par défaut, cela ne semble pas correct. – stdunbar