Как безопасно использовать переменные сессии на JSP в strut - PullRequest
0 голосов
/ 10 января 2012

Я печатаю некоторые значения в JSP из сеанса, используя < bean:write /> успешно.Но после отправки страницы, если я вернусь (после истечения сеанса) и обновлю страницу, на странице будет напечатана полная трассировка треков:

< session attribute name> not found in session scope.

Чтобы избежать этого, я сделал 2 вещи.Но у меня ничего не получалось.

  1. Я завернул < bean:write /> внутрь < logic:empty />
  2. В начале страницы я только что проверил, является ли значение < session attribute name> нулевым.Если это так, я перенаправляю его на страницу ошибки.

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

< request attribute name> not found in request scope.

Код из JSP для проверки сеанса

HttpSession sess = request.getSession(false); 
if (sess == null) {response.sendRedirect("errorpg.jsp");} 
else{
    String sessionId_Logon = (String) sess.getAttribute("attrName");
    if(sessionId_Logon == null)
    {
            response.sendRedirect("errorpg.jsp");
    }
}

Я знаю, что блок "else" не имеет смысла.Я тоже попробовал один.

Ответы [ 3 ]

0 голосов
/ 10 января 2012

Хорошо! Я нашел проблему, я думаю. < bean:write /> компилируется раньше, чем что-либо еще. Так что моя внешняя проверка на сессию бессмысленна.

Теперь у меня есть 2 решения;

  1. Либо я не пользуюсь < bean:write />. Вместо этого я могу использовать скриптлет
  2. Или я могу проверить правильность сеанса на какой-то странице вверху в иерархии как какая-то главная страница.

Я использую второй.

0 голосов
/ 25 июля 2012

Может быть, это может вам помочь ... со мной все в порядке ...

<logic:empty name="employee" scope="session"> <jsp:forward page="LoginScreen.do"/> </logic:empty>

Добро пожаловать, мистер <bean:write name="employee" scope="session"/ >

0 голосов
/ 10 января 2012

Я был бы более склонен проверить, является ли сеанс действительным один раз на странице, а затем сообщить пользователю, если он истек. Посмотрите что-то вроде этой темы или этой , чтобы узнать, что делать.

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