Просто соберите всех зарегистрированных пользователей в Set
в области приложения.Если ваше приложение хорошо разработано, у вас должен быть javabean User
, который представляет вошедшего в систему пользователя.Позвольте ему реализовать HttpSessionBindingListener
и добавить / удалить пользователя из Set
, когда он собирается быть связанным / не связанным в сеансе.
Пример запуска:
public class User implements HttpSessionBindingListener {
@Override
public void valueBound(HttpSessionBindingEvent event) {
Set<User> logins = (Set<User>) event.getSession().getServletContext().getAttribute("logins");
logins.add(this);
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
Set<User> logins = (Set<User>) event.getSession().getServletContext().getAttribute("logins");
logins.remove(this);
}
// @Override equals() and hashCode() as well!
}
Обратите внимание, что вам нужно подготовить Set
в области приложения, чтобы он не возвращал null
в вышеуказанных методах.Вы можете сделать это в тех же методах с помощью nullcheck или с помощью ServletContextListener#contextInitialized()
.
Затем в любом месте вашего приложения, где у вас есть доступ к ServletContext
, напримерв сервлете вы можете получить доступ к зарегистрированным пользователям следующим образом:
Set<User> logins = (Set<User>) getServletContext().getAttribute("logins");