#jsp #login #admin #logout
#jsp #войти #администратор #Выход
Вопрос:
В настоящее время я работаю над проектом в JSP. Как мне сохранить время входа пользователя в систему и выхода из системы и текущий номер. пользователей онлайн в базе данных? Также я хочу проверить это как администратор, а не как пользователь?
Ответ №1:
Как мне сохранить время входа пользователя в систему и выхода из системы и текущий номер. пользователей онлайн в базе данных?
Вот простой пример HttpSessionListener для отслеживания общего количества активных сеансов в веб-приложении. Если вы хотите продолжать отслеживать поведение вашего сеанса при создании и удалении, рассмотрите этот прослушиватель.
Пример кода:
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionCounterListener implements HttpSessionListener {
private static int totalActiveSessions;
public static int getTotalActiveSession(){
return totalActiveSessions;
}
@Override
public void sessionCreated(HttpSessionEvent arg0) {
totalActiveSessions ;
System.out.println("sessionCreated - add one session into counter");
// database call to log the log in event of the user with current time
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
totalActiveSessions--;
System.out.println("sessionDestroyed - deduct one session from counter");
// database call to log the log out event of the user with current time
}
}
web.xml
<web-app ...>
<listener>
<listener-class>com.x.y.z.SessionCounterListener</listener-class>
</listener>
</web-app>
Как это работает?
- Если создается новый сеанс, например
request.getSession();
,sessionCreated()
будет выполнен прослушиватель. - Если сеанс будет уничтожен, например, тайм-аут сеанса или
session.invalidate()
прослушивателяsessionDestroyed()
будет выполнен.
Пример кода:
HttpSession session = request.getSession(); //sessionCreated() is executed
...
session.invalidate(); //sessionDestroyed() is executed
Для получения дополнительной информации посетите mkyong.com откуда взят этот пример.
Комментарии:
1. Итак, чтобы я мог это увидеть, я создаю отдельную таблицу в базе данных или просматриваю ее в той же базе данных с информацией для входа, такой как имя пользователя и пароль?
2. теперь у вас есть полный контроль, где вы можете фиксировать события входа пользователя в систему и выхода из системы. Просто зарегистрируйте его в базе данных вместе с именем пользователя или любым уникальным идентификатором вместе с текущим временем.
3. О, хорошо, спасибо, я бы полностью понял это только после того, как я это осуществлю. Итак, должен ли я написать приведенный выше код в bean и вызвать bea во время входа в систему?
4. Извини, что я этого не понял. напишите боб, зачем это нужно? Это слушатель, а не обычный класс POJO. Этот класс вызывается контейнером автоматически. Вам не нужно вызывать его вручную. Вы должны сообщить контейнеру, что это мой слушатель, и вызывать его, когда такие действия происходят в моем приложении, и это делается путем определения его в
web.xml
, как показано в моем посте.5. Хорошо, сделайте это в соответствии с вашим темпом и дизайном приложения. но не могли бы вы объяснить мне, что значит вызывать компонент во время входа в систему?
Ответ №2:
Вы должны создать таблицу like log_events(id, event_type, when)
и хранить в ней события входа и выхода всякий раз, когда они происходят.
Комментарии:
1. Как мне сохранить его в качестве администратора, чтобы отслеживать пользователей?
2. Просто убедитесь, что вы показываете записи из этой таблицы администратору и никому другому. Что касается вставки записей, всякий раз, когда у вас есть успешный вход в систему или выход из системы, сохраните соответствующее событие в таблице.