JSP - завершить выполнение остальной части кода - PullRequest
1 голос
/ 19 февраля 2012

В первой строке моей страницы JSP я проверяю, что значение сеанса равно нулю.Если null перенаправить обратно на страницу входа.

Когда я проверил его, выйдя из системы и проверив эту страницу, выдается ошибка org.apache.jasper.JasperException: java.lang.NullPointerException.

Так как выйти из кода сразу после строки sendRedirect?

Код:

<%
   if((session.getAttribute("user_type")==null) || (!session.getAttribute("user_type").equals("user")))
    {
        response.sendRedirect("login.jsp");

        //prevent executing rest of code.
    }
%>

<html>
  <head>
    .......

Для выхода из системы я использую только: session.invalidate();

Ответы [ 3 ]

1 голос
/ 19 февраля 2012

Ваш код JSP эквивалентен:

if (someCondition) {
    redirect();
}
doPlentyOfOtherThings();

Если вы не хотите делать много других вещей, код должен быть

if (someCondition) {
    redirect();
}
else {
    doPlentyOfOtherThings();
}

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

<%
    if((session.getAttribute("user_type")==null) || (!session.getAttribute("user_type").equals("user")))
    {
        response.sendRedirect("login.jsp");
    }
    else
    {
%>
<html>
    <head>
    .......
<%   } %>

За исключением того, что

  • вы не должны использовать скриптлеты, но JSP EL и JSTL на страницах JSP
  • такая логика не должнабыть в JSP, который должен только генерировать разметку.Он должен находиться в сервлете действий предпочитаемой вами инфраструктуры MVC, который перенаправляет или отправляет в JSP.
0 голосов
/ 28 января 2016

Да. Просто добавьте следующую строку:

if ( true ) return;
0 голосов
/ 19 февраля 2012

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

У меня есть тег jsp: include. А в основном коде я только назначил страницу для включения, если пользователь действителен (вошел в систему). Итак, когда пользователь вышел из системы, этот тег все еще пытался включить его (я использовал переменную для передачи имени страницы).

Что я добавил:

<%
   if(session.getAttribute("user_type")!=null)
    {
%>
       <jsp:include.... />
<%
    }
%>

Теперь этот тег jsp не будет учитываться при выполнении, если пользователь недействителен.

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