Что такое управление сеансом в 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-сессия

четвертый мощный и в основном используется в настоящее время.