Bonjour,
J'ai des servlets avec une validation de connexion au site avant d'effectuer le traitement. Ainsi, si un usager tente d'accéder à la servlet /Exemple1?Param1=mavaleur directement sans s'être connecté préalablement, une redirection est effectuée à la servlet /Login. Je veux qu'après la connexion, ce soit la bonne servlet demandée qui soit affichée (dans ce cas-ci, /Exemple1 et avec paramètres "Param1=mavaleur").
Ce que j'ai fait dans doGet():
_classeReq et _params étant des variables private de ma classe Login.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Object classeReq = request.getAttribute("javax.servlet.forward.servlet_path"); if (classeReq != null) _classeReq = (String)classeReq; else _classeReq = "/ServletParDefaut"; String params = request.getQueryString(); if (params != null) _params = params; else _params = "";
Un problème survient si deux usagers tente d'accéder au site en même temps alors qu'ils ne sont pas connectés. Il s'agit de la même variable, donc pas thread safe... et ça cause le problème que les deux usagers vont accéder à la même page après un login simultanné (soit la servlet demandée par le dernier usager). Bref, l'utilisation de la variable private n'est pas l'idéal... Sauf que je ne sais pas où stocker ces paramètres. Le scope request n'est pas possible puisque l'opération s'effectue en deux étapes (doGet: lecture de la page, doPost: submit du login/pass)... Et le scope session n'est pas possible non plus puisque je ne suis pas encore loggué. Le request.getSession(); s'effectue dans le doPost(). Que faire???
Merci de votre aide!
Partager