Весна, когда создается HTTPSession, если все контроллеры одноэлементные - PullRequest
1 голос
/ 04 мая 2011

Я изучаю Spring 3 и пытаюсь понять, когда создается HTTPSession и каков жизненный цикл.Все мои контроллеры одноэлементные (по умолчанию), и я настроил HttpSessionListener.Я заметил, что sessionCreated никогда не вызывается.

Но когда я устанавливаю свой LoginController как Session контроллер области действия, тогда sessionCreated вызывается.Я хочу знать, как HttpSession управляется пружинными контроллерами.Кроме того, еще один вопрос: допустим, первый запрос от borowser приходит к LoinController и создает HttpSession - затем последующие запросы от этого браузера к другому контроллеру (который является одиночным) будут использовать тот же HTTPSession или будут без состояния?Может кто-нибудь, пожалуйста, помогите.

Ответы [ 2 ]

3 голосов
/ 04 мая 2011

Контроллеры одноэлементны и не имеют состояния. Сервлет-диспетчер вызывает нужный метод контроллера и передает ему сеанс. Сессия получается сервлетом-диспетчером, вызывая request.getSession(). Поскольку это обычный сервлет, контейнер «отправляет» ему запрос и ответ, которые получает любой сервлет на каждый запрос.

Тем не менее, сервлет также одноэлементный (у него есть один экземпляр на контекст). И несколько потоков (= запросы) вызывают его методы.

И последнее замечание - бобы в сессионной области нужны редко. По моему опыту, у вас может быть целое приложение без каких-либо bean-объектов сессионной области.

0 голосов
/ 04 мая 2011

Сеанс связывает несколько HTTP-запросов, поэтому, как только он создан для пользователя, механизм сервлета поддерживает его, используя куки или перезапись URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...