Страница JSP и сервлет, сообщающие разные идентификаторы сеанса - PullRequest
0 голосов
/ 06 августа 2010

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

Ответы [ 2 ]

1 голос
/ 06 августа 2010

Мое лучшее предположение, что ваша сессия где-то становится недействительной. Если у вас есть где-то в вашем коде операторы session.invalidate(), поместите в них точки останова и проверьте в режиме отладки, ударил ли какой-либо из них.

Вы также можете внедрить и настроить HttpSessionListener в своем проекте. Реализуйте интерфейс обратного вызова и добавьте класс реализации к вашему web.xml:

<listener>
    <listener-class>com.xyz.AppSessionListener</listener-class>
</listener>

Поместите точку останова в метод sessionDestroyed и посмотрите, когда она попадет в режим отладки.

0 голосов
/ 06 августа 2010

Я не заметил, что вы открыли новый вопрос для этого.На этот вопрос ответили в комментариях к вашему предыдущему вопросу .Вот фрагмент релевантности:

Сессии зависят от домена и контекста.Если сервлет прослушивает URL-адрес домена и / или контекста, отличного от JSP, он действительно использует другой сеанс.Однако вы можете разрешить различным контекстам совместно использовать один и тот же сеанс, настроив соответствующий сервлет-контейнер (в Tomcat установите атрибут emptySessionPath для <Connector> в true).Но вы не можете совместно использовать сеансы между разными доменами из-за ограничений безопасности в спецификации HTTP.

Другая причина в том, что вы явно аннулировали сеанс с помощью HttpSession#invalidate(), но этобыло слишком очевидно, чтобы заметить в вашем коде.

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