Как установить код состояния HTTP в обработчиках ошибок JSP - PullRequest
6 голосов
/ 08 декабря 2010

У меня есть страница JSP (в Tomcat), которая использует теги JSP для получения некоторых данных.Но эти JSP-теги могут генерировать исключения (например, когда значения параметров недопустимы).Теперь я хочу реализовать более качественную обработку ошибок для этих ситуаций.Мне не удалось найти способ ГЛОБАЛЬНО указать обработчик исключений (определения страниц ошибок в web.xml не работают для исключений, генерируемых в JSP).Единственный способ, который я нашел до сих пор, - это указать атрибут errorPage в заголовке страницы ВСЕХ JSP-файлов.

<% page errorPage="/WEB-INF/jsp/errors/500.jsp" %>

Довольно раздражает это для ВСЕХ JSP, но это приемлемо.Но недопустимым является тот факт, что страница ошибки всегда доставляется с кодом состояния HTTP 200. Я хочу вместо 500.Я попытался использовать сервлет в качестве errorPage вместо JSP и попытался установить response.setStatus (500), а также response.sendError (500), но оба вызова, кажется, игнорируются.Таким образом, этот код печатает «200» два раза, и я понятия не имею, почему:

System.out.println(response.getStatus());
response.setStatus(500);
System.out.println(response.getStatus());

Итак, вопрос: как я могу установить код состояния HTTP в обработчиках ошибок JSP?

Ответы [ 2 ]

4 голосов
/ 08 декабря 2010

Вы можете настроить свои страницы ошибок в web.xml.

<error-page>
        <error-code>
            500
        </error-code>
        <location>
            /500.jsp
        </location>
    </error-page>

в вашем 500.jsp, установите директиву <%@ page isErrorPage="true" %>

2 голосов
/ 28 марта 2011

Вместо setStatus(500) лучше использовать sendError(500) - есть некоторые различия. Конфигурация в web.xml отлично работает с sendError, однако, если вы не хотите, чтобы конфигурация в web.xml, директива error-page from page работала только для меня, а не для кодов ошибок HTTP.

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