Olá ! Estou a muito tempo procurando uma solução a respeito do assunto e não encontro. É o seguinte: Estou construindo um fórum. Gostaria de listar os Usuários que estão logados no sistema.
Ex:
Rômulo - Online
Patrícia - Ofline
Nas minhas pesquisas, conclui que tenho que implementar uma interface que me dá acesso aos métodos sessionCreated e sessionDestroyed. Consegui, pelo menos, criar minhas classe, mas não sei onde devo instanciar essa classe para que a mesma funcione !
Tenho que armazenar os logins dos usuários que se logaram no sistema. Esse local de armazenamento deverá estar disponível para todos os usuário. Deu pra entender?
A minha sugestão é que vc faça uma classe tipo : “CentralDeUsuarios”, que seja singleton, e a cada sessão destruida vc remove da central, e no momento do login vc adiciona.
Ex:
// seu session listenerpublicvoidsessionCreated(HttpSessionEvente){}publicvoidsessionDestroyed(HttpSessionEvente){// Como devo proceder para apagar o usuário neste momento????Usuariou=(Usuario)e.getSession().getAttribute("usuariologado");if(u!=null){CentralDeUsuarioscentral=CentralDeUsuarios.getInstance();central.adicionar(u);}}
Sua classe de central de usuarios:
// ela deve ser singleton.privateMapusuarios=newHashMap();publicvoidadd(Usuariou){usuarios.put(u.getLogin(),u);}publicvoidremove(Usuariou){usuarios.remove(u.getLogin());}publicvoidobterTodosUsuarios(){returnusuarios.values();}
[]'s
U
Undeclared_Identifie
Certo. Mas… qualquer usuário do site poderá ver quem tá online com isso??
O quê é singleton?
Onde devo instanciar essa classe??? ou é automático?? assim que a sessão é criado o método é disparado???
Onde devo instanciar essa classe??? ou é automático?? assim que a sessão é criado o método é disparado???
O SessionListener vc ñ instancia. Vc coloca no web-xml a declaração dele e o container o instanciará e chamará os métodos quando a sessão for criada/destruida.
Cuidado que o lance da sessão ser criada ñ significa que o usuário está logado.
Por isso que vc deverá adicionar o usuário na sua “Central de Usuários” no momento que o usuário logar.
Já a Central de Usuários, se ela for Singleton o instanciamento será “transparente”…
U
Undeclared_Identifie
Valeu, cara !
Essa parada de Desig Patterns é maneira ! :lol:
As vezes eu me perdia muito instanciando o que não devia e criando novos repositório… Vai ajudar bastante ! Obrigado !
Em relação a minha dúvida, inicialmente irei codificar uma página de teste para exibir um “Contador de Acessos” ! Após isso, postarei aqui, neste mesmo tópico, um pedido de ajuda para configurar o arquivo WEB-XML !
Não posso agora pq estou no trabalho, mas sempre levo esses novos conceitos para estudar em casa ( novo conceito pra mim rs rs )
Valeu, Brow ! 8)
K
kubanacan
tenho a msm dificuldade de controlar os usuários…
to tetando de várias formas… preciso fazer um contador… saber qnd alguem entrou e saiu… limitar numero de pessoas conectadas…
se conseguir fazer posta ai… eu to tentando aki tbm! qlq vitoria aki aviso!
vlw galera!
R
rodrigors3012
Implementei e deu certo, mas estou com problemas quando o usuário não clica no botão sair do sistema e então fecha o browser ou fecha a aba. O ideal é eu invalidar a sessão quando ele fizer isso. Li que tem como fazer com javascript, mas alguem tem algum exemplo, não consegui ainda.