2013-04-29 4 views
0

У меня есть следующий код в JSP.Страница не перенаправляется

try { 
    ... 
    if (...) 
     response.sendRedirect("secondPage.jsp"); 
    ... 
} catch (Exception e) { 
    response.sendRedirect("thirdPage.jsp"); 
} 

Страница не перенаправляется в соответствии с кодом. Я получаю IllegalStateException на сервере.

+0

Возможный дубликат [java.lang.IllegalStateException: не может перенаправляться после того, как ответ был зафиксирован] (http://stackoverflow.com/questions/2123514/java-lang-illegalstateexception-cannot-forward-after-response-has- was-committe) – Lion

+0

Если у вас есть исключение stacktrace, то не забудьте опубликовать полное исключение stacktrace в следующий раз. – Lion

ответ

0

Как лучше мне известно ... После переадресации вызова:

  1. Ответ создается сервером с кодом состояния 302.
  2. Ответ идет в браузере, но ничего не отображает
  3. Этот ответ содержит информацию о целевом ресурсе.
  4. Браузер берет эту информацию о целевом ресурсе и генерирует встроенный запрос в пункт назначения (но он ничего не отображает для этого ответа)
  5. Запрос отправляется в пункт назначения, а окончательный ответ поступает в браузер, и браузер отображает его.

Вот 2 вещи, чтобы заметить:

  1. В случае response.sendRedirect (-) управление переходит к конечному пункту назначения с 1 сети поездка туда и обратно через браузер.
  2. В этом случае не используют одни и те же объекты запроса и ответа (как Http является протоколом без гражданства)

Так держать это в виду, вы должны обеспечить абсолютный URL (в том числе веб-контекста или веб-корневой папке) ДО ваш конечный ресурс назначения, а не относительный URL.

0

Ваш код должен работать. Но я рекомендовал использовать <JSP:FORWARD>.

Пример: -

<jsp:forward page="index.jsp" /> 

Его больше отношение к вашему purpose.Try, и надеюсь, что это поможет.

0

Убедитесь вы ничего не написал в ответ перед вашей sendRedirect команды.

С тех пор как вы получаете IllegalStateException похоже, что ваш jsp уже написал некоторый контент для ответа, а затем пытается перенаправить.

Также лучшим вариантом в этом случае является запись вашей логики в сервлет.

Смежные вопросы