Что такое управление сеансом в Java?
Я столкнулся с этим вопросом и в своем интервью. У меня много путаницы с Session Scope, и это управление в java.
В web.xml у нас есть запись:
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
Что он на самом деле указывает? Является ли это областью всего проекта?
Другой вопрос, который меня смущает, - как мы можем отделить область сеанса от нескольких запросов в одном проекте? Значит, если я вхожу в систему с ПК, и в то же время я вхожу в систему с другого ПК, он его отличает?
Кроме того, другая запутанная вещь - разница браузера. Почему разные Gmails можно открывать в разных браузерах? И Gmail может запретить сеанс от входа в Logout. Как это поддерживается в нашей личной сети?
Ответы
Ответ 1
Управление сеансом не ограничивается Java и сервлетами. Здесь примерно как это происходит:
- Протокол HTTP не имеет статуса, поэтому сервер и браузер должны иметь способ хранения идентификатора пользователя через несколько запросов.
- Браузеры отправляют первый запрос на сервер
-
Сервер проверяет, идентифицирован ли браузер с файлом cookie сеанса (см. ниже)
3,1. если сервер не знает клиента:
-
сервер создает новый уникальный идентификатор и помещает его в карту (грубо) в качестве ключа, значение которой является вновь созданным сеансом. Он также отправляет ответ cookie, содержащий уникальный идентификатор.
-
браузер хранит файл cookie сеанса (со временем жизни = время жизни экземпляра браузера), содержащий уникальный идентификатор, и использует его для каждого последующего запроса, чтобы идентифицировать себя однозначно.
3,2. если сервер уже знает клиента - сервер получает сеанс, соответствующий переданному уникальному идентификатору, найденному в файле cookie сеанса
Теперь на некоторые вопросы, которые у вас есть:
-
тайм-аут сеанса - это время, которое необходимо для записи каждой записи карты сеанса без доступа. Другими словами, если клиент не отправляет запрос в течение 30 минут (из вашего примера), карта сеанса будет удалять эту запись, и даже если клиент идентифицирует себя с уникальным ключом в cookie сеанса, данные не будут присутствовать на сервере.
-
разные gmails (и любой сайт) могут быть открыты в разных браузерах, потому что cookie сеанса для каждого браузера. То есть каждый браузер однозначно идентифицирует себя, не отправляя уникальный идентификатор сеанса, или отправляя сервер, сгенерированный для него.
-
запись с разных ПК одинакова - вы не используете идентификатор сеанса
-
logging-out фактически удаляет запись для идентификатора сеанса на сервере.
Примечание: в качестве альтернативы можно сохранить уникальный идентификатор сеанса:
Ответ 2
Что это значит на самом деле?
Время жизни сеанса. Сеанс истекает, если между клиентом и сервером нет транзакции в течение 30 минут (на сегмент кода).
Является ли объем всего проекта?
Он имеет область применения. Определено для каждого веб-приложения
Другой вопрос, который меня пугает, - это то, как можно мы разделяем объем сеанса несколько запросов в одном проекте? Значит, если я вхожу в систему с ПК и amp; в то же время я вхожу в систему из другой компьютер, он его дифференцирует?
Да. Идентификаторы сеанса (JSESSIONID для Apache Tomcat) будут разными.
Кроме того, другая запутанная вещь - это разница в браузере. Почему различные Gmails можно открыть в разные браузеры?
Каждый логин одного и того же пользователя из другого браузера - это совсем другой сеанс. И файлы cookie, установленные в одном браузере, не будут влиять на другой. В разных браузерах возможны разные экземпляры Gmail.
И Gmail может предотвратить сеанс от Войдите в систему. Как это поддерживается? с нашей личной страницей?
Постоянные файлы cookie
Ответ 3
Сервлеты в Java имеют объект HttpSession, который вы можете использовать для хранения информации о состоянии для пользователя. Сеанс управляется клиентом с помощью cookie (JSESSIONID) или может быть выполнен с использованием перезаписи URL. Тайм-аут сеанса описывает, как долго сервер будет ждать после последнего запроса перед удалением информации о состоянии, хранящейся в HttpSession.
Объем для каждого экземпляра браузера, поэтому в примере, который вы вводите в журнал с двух разных ПК, вы получите два объекта сеанса.
Ответ 4
если вы открываете одно и то же приложение в другом окне, я имею в виду несколько экземпляров браузера, он будет создавать разные сеансы для каждого экземпляра.
Ответ 5
Я рекомендую Apache Shiro для управления сеансом, аутентификации и авторизации.
Я забираю это.
Поскольку @BalusC, скомпилированный ниже, отвечает за управление сеансом http, только контейнер сервлета. Сиро просто использует это. Он подключится к HttpSession через фильтр, который вы явно определяете.
Ответ 6
У нас есть 4 способа управления сеансом.
1.Cookies
2.URL-переписывание
Поля 3.Hidden
4.HTTP-сессия
четвертый мощный и в основном используется в настоящее время.