Bonjour,
Avec Struts 2, plus besoin de travailler avec les objets de l'API Servlet. Lorsque tu arrives dans le code de ton action, tu as la possibilité d'avoir une abstraction de ta session.
Tu as deux solutions pour accéder à ta session. Tu fais en sorte que ton action implémente "SessionAware" ce qui aura pour effet d'injecter une Map représentative de la session.
1 2 3 4 5 6 7
| public class LoginAction extends ActionSupport implements SessionAware {
private Map<String, Object> session;
...
public void setSession(Map<String, Object> session) {
this.session = session;
}
} |
Tu peux aussi avoir accès à cette Map par la ligne suivante :
ActionContext.getContext().getSession();
De fait, dès que tu fais un add sur cette map, cela se reflètera au niveau de la javax.servlet.http.HttpSession :
session.put(SessionConstants.LOGGED_USER, authenticatedUser);
Voilà pour les bases. Mais si tu regardes la HttpSession, il y a des fonctionnalités supplémentaires comme invalidate(). Struts 2 fournit une sous-classe de Map qui permet d'utiliser des méthodes avancées : "org.apache.struts2.dispatcher.SessionMap".
Voici un exemple d'utilisation :
1 2 3 4 5 6 7 8
|
if (session instanceof SessionMap) {
try {
((SessionMap<String, Object>) session).invalidate();
} catch (IllegalStateException e) {
logger.error("Session invalid : cannot invalidate the session", "");
}
} |
Voilà, je ne sais s'il y a d'autres choses à dire mais pour les bases tout y est.
Cordialement,
Stac
Partager