Отправки, сделанные контейнером во время исключений/ошибок, называются отправками ошибок. Обычно это рассылки на страницы ошибок. Насколько я знаю, нет способа напрямую отправить сообщение об ошибке.
Для запроса, полученного через диспетчеризацию ошибок, будет задан тип диспетчера DispatcherType.ERROR. (В коде метода службы сервлета вы можете получить тип отправки, используя getDispatcherType())
Следующие шесть атрибутов области запроса также будут установлены в сообщениях об ошибках.
"javax.servlet.error.exception"
"javax.servlet.error.exception_type"
"javax.servlet.error.message"
"javax.servlet.error.request_uri"
"javax.servlet.error.servlet_name"
"javax.servlet.error.status_code"
Итак, если у вас есть страница ошибок, на которую контейнер перенаправляет ошибки, вы знаете, что можете прочитать эти шесть атрибутов для получения дополнительной информации.
http://docs.oracle.com/javaee/6/api/javax/servlet/DispatcherType.html http://docs.oracle.com/javaee/6/api/javax/servlet/RequestDispatcher.html
Вы можете настроить отправку ошибок, используя тег в дескрипторе развертывания (web.xml). Например, если вы добавили тег error-page для кода ошибки 404, то контейнер будет отправляться на эту страницу при возникновении ошибки page not found. На этой странице ошибки вы можете использовать такой код, как request.getAttribute("javax.servlet.error.message"), чтобы получить сведения об ошибке. Пример ...
веб.xml:
<web-app>
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
</web-app>
ошибка.jsp:
<!DOCTYPE html>
<html>
<head>
<title>404 Error</title>
</head>
<body>
The page was not found. You requested <%= request.getAttribute("javax.servlet.error.message") %> but it was not found. Sorry.
</body>
</html>
В приведенном выше примере приложения, если страница, запрошенная клиентом, не найдена или вы где-то используете response.sendError("404", "..."), контейнер отправит сообщение об ошибке в error.jsp.
Здесь также применяется механизм обработки ошибок JSP (использующий директивы страницы «errorPage» и «isErrorPage»).
person
manojtc
schedule
02.05.2013