Bonjour,
J'ai une classe Java qui doit mémoriser dans une ArrayList
tous les utilisateurs connectés au site web avec leurs infos.
Comment puis-je accéder à cette classe à partir d'un JSP ou Servlet ?
Merci pour toute réponse !!
Bonjour,
J'ai une classe Java qui doit mémoriser dans une ArrayList
tous les utilisateurs connectés au site web avec leurs infos.
Comment puis-je accéder à cette classe à partir d'un JSP ou Servlet ?
Merci pour toute réponse !!
si tu veux mémoriser tes utilisateurs conectés dans une arraylist tu peux mettre cet objet dans le context de l'application.
En gros il te faut initialiser cet objet via une classe implementant ServletContextListener et surveiller les ouvertures/fermetures de session avec HttpSessionListener
tu gères apres les evenement de la session. Ne pas oublier de déclarer ces classes dans le web.xml.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class MaClasseContextListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { List<User> list = new ArrayList<User>(); ServletContext context = event.getServletContext(); context.setAttribute("MesUtilisateursConnectes",list); } et une autre classe public class MaClasseListenerSession implements HttpSessionListener { public void sessionCreated(HttpSessionEvent e) {} public void sessionDestroyed(HttpSessionEvent e) {} }
Apres pour acceder à cet objet tu recuperes le context avec getServletContext().getAttribute("MesUtilisateursConnectes"); dans une servlet
dans une JSP me souviens plus tres bien ce doit etre application.getAttribute("MesUtilisateursConnectes" );
nb : la classe User est un exemple, à toi d'adapter
Merci beaucoup beaucoup ! Ton explication est très claire !
Je n'y aurait jamais pensé !!
Au fait j'ai instancié et mémoriser ces classes dans le contexte,
pas à partir d'une classe implémentant ContextListener,
mais dans une servlet 'extends HttpServlet' load-on-start.
Ils ont aussi accès au contexte, est-ce qu'il faut absolument avoir cette clase implementant ContextListener ?
non tu peux aussi le faire a partir d'une servlet (HttpServlet), dans la methode init() avec le load on startup.
la solution que je t'ai donné est pour bien séparer tes données dans ton application, une servlet est généralement lié a une seule action, elle traite une requete elle n'a pas a faire autre chose.
le ServletContextListener gère lui le context de l'application donc les données relatives au context.
En pratique tu pourrais meme initialiser ces donnes dans une JSP! c'est une juste une question d'organisation du code apres cest plus facile de relire ton code tu sais ou se trouve tes initialisations
bonne continuation !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager