2011-07-15 3 views
0

Je travaille avec des servlets. Lorsque mon utilisateur se connecte, mon application définit ses userId et deviceId dans une variable de session.Récupération des données de session des utilisateurs connectés dans java

Une autre partie de mon application a maintenant besoin de la liste des personnes en ligne et de leur userId/deviceId. Notez qu'un utilisateur peut avoir des connexions simultanées avec 2 périphériques, donc nous avons 2 deviceIds pour le même userId.

Comment dois-je aborder cette situation? Je ne souhaite pas utiliser la base de données pour suivre les fonctionnalités de connexion/déconnexion

Répondre

4

Stockez également ces informations dans l'attribut HttpServletContext. Ce contexte est global par servlet et peut être accsessible par toutes les sessions.

Vous pouvez même faire plus. À l'aide de HttpSessionAttributeListener, vous pouvez être averti chaque fois que l'attribut est ajouté. Par conséquent, si vous souhaitez créer un type d'application de surveillance, il peut être plus réactif.

1

En plus de la réponse d'Alex. L'attribut d'en-tête que vous recherchez est user-agent. Voici l'extrait de code d'accès au type de navigateur à partir de la requête.

((javax.servlet.http.HttpServletRequest) pageContext.getRequest()). GetHeader ("user-agent")

0

En plus des réponses d'Alex et Suken, en supposant que l'utilisateur dispose d'une seule session vous pourriez stockez les ID de périphérique dans une carte:

String userAgent = (see Suken's response) 
String deviceId = request.getParameter("REQUEST_PARAMETER_DEVICE_ID"); 
Map<String, String> devices = request.getSession().getAttribute("SESSION_ATTRIBUTE_DEVICES"); 
if (devices == null) { 
    devices = new HashMap<String, String>(); 
    request.getSession().setAttribute("SESSION_ATTRIBUTE_DEVICES", devices); 
} 
devices.put(userAgent, deviceId); 

Ceci garantit que les périphériques multiples restent visibles et ne sont pas remplacés. Vous devez toujours les exposer comme Alex a expliqué si vous voulez y accéder au niveau de l'application.

Questions connexes