![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Tirael |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 31.1.2006 Где: Москва Репутация: 1 Всего: 7 |
Преамбула
Пишу чат. Есть несколько сервлетов и есть фильтр, который не позволяет обращатся к сервлетам если нет сессии. Сервлеты по надобности диспатчерятся на jspx страницы. В программе только два места, где явно идет работа с сессией: это собственно фильтр и LoginServlet. Амбула Дважды обратившись, например, к сервлету на терминале пишется :
ОТКУДА ВЗЯЛАСЬ СЕССИЯ ?????? Вот код фильтра: (LoginServlet развернут на /vchat/login
По идее он не создает сессии. Вот код LoginServlet
В моем случае здесь тоже не создается сессии ( на терминал ничего не выводится!!!) Мои подозрения падают на jspx страницу, где я обращаюсь к атрибуту сессии ${username == null}. Точнее сказать не к атрибуту именно сессии, а атрибут ищется сначала в реквесте, потом в сессии, потом в контексте. МОЖЕТ ЛИ ТАКОЕ ОБРАЩЕНИЕ НЕЯВНО СОЗДАВАТЬ СЕССИЮ ? Вот код jspx страницы ?
--------------------
|
||||||||
|
|||||||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Видишь ли, сессию создает сервер приложений сам, то есть обычно тебе не надо для этого предпринимать что-то специальное. Веб-контейнер работает по принципу "клиент-сервер", при этом единственный момент когда сессия не существует - это когда был послан запрос (request) клиентом, но еще не сформирован ответ сервера (response). В процессе этого первого обмена браузер и веб-контейнер обмениваются информацией, котороая позволяет идентифицировать сессию, то есть сервер просто выдает клиенту идентификатор сессии, которым клиент далее сопровождает все запросы. Это позволяет серверу определить к какой сессии относится запрос. Вот собственно по этому в момент первого вызова listener сессия равна null, а при втором вызове сессия уже существует.
|
|||
|
||||
Tirael |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 31.1.2006 Где: Москва Репутация: 1 Всего: 7 |
вот подстава...
![]() tux, thnx ![]() Еще несколько вопросов: 1. А можно ли это отключить как-нибудь? Сервер - JBoss. Не то чтоб очень надо, а просто ради интереса. 2. Получается, что все что мне надо, это просто проверять не только наличие сессии, но и наличие в ней моего аттрибута идентефицирующего пользователя, ловя вовремя нули и эксепшены? (JAAS не предлогать ![]() Это сообщение отредактировал(а) Tirael - 26.4.2006, 19:55 --------------------
|
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Создание и поддержание сессии определяет стандарт J2EE, поэтому никаких отключений. Если ты хочешь сделать перенаправление пользователя на логин если он еще не идентифицировал себя, то да, так и поступают. Если работаешь с JBoss, то использование JAAS было бы неплохим решением создания системы безопасности потому как JBoss уже кое-что для этого уже предоставляет. Правда при этом будешь навсегда к нему привязан. Раз уж тебя интересует система безопасности, то вот ссылка - http://acegisecurity.org/. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |