Значение сеанса httpcontext становится нулевым в других скриптлетах той же страницы JSP - PullRequest
1 голос
/ 23 сентября 2010

У меня есть страница jsp с различными условиями IF. При загрузке страницы jsp будет вызываться одно из условий if на основании значения, установленного для действия fuse.У меня есть проблема, например, в первый раз, когда страница загружается, затем вызывается условие IF1 (скажем, для ex), и объект сеанса HTTPCOntext назначается переменная.Во второй раз, когда страница загружается (имеется в виду после отправки формы), вызывается другое условие IF2 (например, ex). Я попытался получить доступ к объекту сеанса в этом условии if, значение в объекте сеанса равно нулю.

Является ли переменная сеанса в одном скриптлете недоступной для других скриплетов в том же jsp?Мне нужно получить доступ к объекту сеанса во втором условии ЕСЛИ, пожалуйста, дайте мне знать, как этого добиться.

Заранее спасибо Rupa

Ответы [ 2 ]

3 голосов
/ 23 сентября 2010

Несколько фактов:

  • Сессии поддерживаются файлами cookie.
  • Файлы cookie по умолчанию привязаны к определенному домену и контекстному пути.
  • Если на стороне клиента отключены файлы cookie, необходимо позаботиться о перезаписи URL-адреса, чтобы идентификатор сеанса отображался как jsessionid.
  • Запись необработанного кода Java в файле JSP - это плохая идея .

Таким образом, если вы сохранили объект в сеансе и он не доступен в следующем запросе, то он может иметь следующие причины:

  • Другая страница JSP находится в другом домене или контексте.
  • У клиента отключены файлы cookie, и вы не позаботились о перезаписи URL.
  • Вы храните и получаете к нему неправильный доступ.

Поскольку вы говорите о чем-то вроде «HTTPCOntext», который не имеет смысла с точки зрения JSP / Servlet и использует одну страницу JSP, я думаю, что это последняя из возможных причин. Вот пример того, как правильно хранить атрибут в сеансе:

Object someObject = "This is just a String.";
request.getSession().setAttribute("someName", someObject);

и вот как его получить:

Object someObject = request.getSession().getAttribute("someName");
0 голосов
/ 23 сентября 2010

session.putValue устарела

Использовать session.setAttribute(String name, Object value) вот так session.setAttribute("Test",testStringVariable)

и извлечь его session.getAttribute("Test").Это должно сработать.

Подтвердили ли вы, что session.getAttribute("Test") само по себе дает null, или вы инициализировали какую-либо переменную равной нулю и распечатали ее вместо.

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