예외/오류 중에 컨테이너에서 수행 한 전달을 오류 처리라고합니다. 이들은 일반적으로 오류 페이지로 발송됩니다. 내가 아는 바로는 오류 발송을 직접 수행 할 방법이 없습니다.
오류 디스패치를 통해 발생한 요청의 Dispatcher 유형은 DispatcherType.ERROR로 설정됩니다. 서블릿의 서비스 메소드 코드에서 getDispatcherType()을 사용하여 디스패치 유형을 얻을 수 있습니다.
다음의 6 가지 요청 범위 속성도 오류 디스패치에서 설정됩니다.
"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 파일)에 태그를 사용하여 오류 파견. 예를 들어 404 오류 코드에 오류 페이지 태그를 추가 한 경우 페이지를 찾을 수 없음 오류가 발생하면 해당 페이지로 컨테이너가 발송됩니다. 이 오류 페이지에서 request.getAttribute ("javax.servlet.error.message")와 같은 코드를 사용하여 오류에 대한 세부 정보를 검색 할 수 있습니다. 예 ...
는
의 web.xml :
<web-app>
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
</web-app>
error.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"페이지 지시문 사용)도 여기에 적용됩니다.
여전히 나에게는 흐릿합니다. 이 오류 발송을 어떻게 설정/구성합니까? 또한, doesnt response.sendError()는 error dispatch를 호출합니까? – brainOverflow
오류 디스패치에 대한 추가 정보를 추가했습니다. – manojtc