Что такое управление сеансами в Java?

Я столкнулся с этим вопросом в своем Интервью также. У меня действительно есть многие беспорядком с Объемом Сессии и этим управление в Java.

В web.xml у нас действительно есть запись:

<session-config>
        <session-timeout>
            30
        </session-timeout>
</session-config>

На что это указывает на самом деле? Это - объем целого проекта?

Другая точка, смущающая меня, - то, как мы можем отделиться, объем сессии нескольких запрашивают в том же проекте? Средства, если я вхожу в систему от ПК и одновременно я вхожу в систему от другого ПК, они дифференцируют его?

Кроме того, другой запутывающей вещью является различие в браузере. Почему делает другой Gmails, возможный открываться в различных браузерах? И Gmail может препятствовать сессии Вход в систему Выхода из системы. Как это сохраняется с нашей персональной сетью?

14
задан 18 June 2010 в 05:59
поделиться

4 ответа

Управление сеансом не ограничивается Java и сервлетами. Вот примерно, как это происходит:

  1. Протокол HTTP не имеет состояния, поэтому сервер и браузер должны иметь способ сохранения личности пользователя через несколько запросов
  2. Браузеры отправляют первый запрос на сервер
  3. Сервер проверяет, идентифицировал ли браузер файл cookie сеанса (см. Ниже)

    3.1. если сервер «не знает» клиента:

    • сервер создает новый уникальный идентификатор и помещает его в карту (примерно) в качестве ключа, значением которого является вновь созданный сеанс. Он также отправляет ответ cookie, содержащий уникальный идентификатор.

    • браузер сохраняет файл cookie сеанса (с временем жизни = время жизни экземпляра браузера), содержащий уникальный идентификатор, и использует его для каждого последующего запроса, чтобы однозначно идентифицировать себя.

    3.2. если сервер уже знает клиента - сервер получает сеанс, соответствующий переданному уникальному идентификатору, найденному в cookie сеанса.

Теперь несколько вопросов, которые у вас есть:

  • тайм-аут сеанса - это время жизни для каждой карты сеанса вход без доступа.Другими словами, если клиент не отправляет запрос в течение 30 минут (из вашего примера), карта сеанса удалит эту запись, и даже если клиент идентифицирует себя с помощью уникального ключа в файле cookie сеанса, никаких данных не будет. на сервере.

  • разные Gmail (и любой сайт) могут быть открыты в разных браузерах, потому что файл cookie сеанса предназначен для каждого браузера. Т.е. каждый браузер идентифицирует себя уникальным образом, либо не отправляя уникальный идентификатор сеанса, либо отправляя тот, который сервер сгенерировал для него.

  • ведение журнала с разных ПК на самом деле одно и то же - вы не разделяете идентификатор сеанса.

  • выход из системы фактически удаляет запись для идентификатора сеанса на сервере.

Примечание. В качестве альтернативы можно сохранить уникальный идентификатор сеанса:

26
ответ дан 1 December 2019 в 09:31
поделиться

Сервлеты в Java имеют объект HttpSession, который вы можете использовать для хранения информации о состоянии для пользователя. Сеанс управляется на клиенте с помощью файла cookie (JSESSIONID) или может быть выполнен с помощью перезаписи URL-адресов. Тайм-аут сеанса описывает, как долго сервер будет ждать после последнего запроса перед удалением информации о состоянии, хранящейся в HttpSession.

Область действия указана для каждого экземпляра браузера, поэтому в приведенном вами примере вход в систему с двух разных компьютеров приведет к созданию двух объектов сеанса.

0
ответ дан 1 December 2019 в 09:31
поделиться

Если вы открываете одно и то же приложение в другом окне, я имею в виду несколько экземпляров браузера, он будет создавать разные сеансы для каждого экземпляра.

0
ответ дан 1 December 2019 в 09:31
поделиться

Что это означает на самом деле?

Время жизни сеанса. Сеанс истекает, если нет транзакции между клиентом и сервером в течение 30 минут (на сегмент кода)

Является ли объем всего проекта?

Он имеет область применения. Определяется для каждого веб-приложения

Еще один момент, который меня сбивает с толку, - как можно мы разделяем объем сеанса несколько запросов в одном проекте? Означает, что если я вхожу в систему с ПК и в то же время я вхожу в систему с другой компьютер, отличает ли он его?

Да. Идентификаторы сеанса (JSESSIONID для Apache Tomcat) будут другими.

Еще одна непонятная вещь - разница в браузере. Почему различные сообщения Gmail, которые можно открыть в разные браузеры?

Каждый вход в систему одного и того же пользователя из другого браузера - это совершенно разные сеансы.И файлы cookie, установленные в одном браузере, не повлияют на другой. Таким образом, в разных браузерах возможны разные экземпляры Gmail.

И Gmail может предотвратить сеанс Войдите, чтобы выйти. Как это поддерживается с нашей личной сетью?

Постоянные куки

2
ответ дан 1 December 2019 в 09:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: