2011-08-15 4 views
110

web.xml에서 요소를 사용하여 사용자가 404 오류 코드와 같은 특정 오류가 발생할 때 친숙한 오류 페이지를 지정합니다. web.xml에서 기본 오류 페이지를 지정하는 방법은 무엇입니까?

<error-page> 
     <error-code>404</error-code> 
     <location>/Error404.html</location> 
</error-page> 

그러나 사용자가 원하지 않으면 <error-page>에 지정된 오류 코드를 만나면 기본 오류 페이지가 표시됩니다. web.xml의 요소를 사용하여 어떻게 할 수 있습니까?

+2

무엇 servletcontainer 타겟팅/사용하고 무엇을 당신의'web.xml'을 선언 했습니까? 서블릿 3.0 이후부터는 쉬운 방법이 있습니다. – BalusC

+0

Tomcat 6, 서블릿 2.5를 사용 중입니다. – ipkiss

답변

201

당신은

<web-app ...> 
    <error-page> 
     <location>/general-error.html</location> 
    </error-page> 
</web-app> 

를 지정할 수 있습니다하지만 당신은 서블릿 2.5에 아직도으로, 개별적으로 모든 일반적인 HTTP 오류를 지정하는 것보다 다른 방법이 없습니다. 최종 사용자가 직면 할 수있는 HTTP 오류를 파악해야합니다. 예를 들어 HTTP 인증을 사용하는 barebones 웹 응용 프로그램에서 디렉토리 목록을 사용하지 않도록 설정하고 사용자 정의 서블릿과 처리되지 않은 예외를 던질 수 있거나 모든 메소드가 구현되지 않은 코드를 사용하면 HTTP 오류 401을 설정하려고합니다 , (403), (500), (503)이다.

<error-page> 
    <!-- Missing login --> 
    <error-code>401</error-code> 
    <location>/general-error.html</location> 
</error-page> 
<error-page> 
    <!-- Forbidden directory listing --> 
    <error-code>403</error-code> 
    <location>/general-error.html</location> 
</error-page> 
<error-page> 
    <!-- Missing resource --> 
    <error-code>404</error-code> 
    <location>/Error404.html</location> 
</error-page> 
<error-page> 
    <!-- Uncaught exception --> 
    <error-code>500</error-code> 
    <location>/general-error.html</location> 
</error-page> 
<error-page> 
    <!-- Unsupported servlet method --> 
    <error-code>503</error-code> 
    <location>/general-error.html</location> 
</error-page> 

가장 일반적인 것을 다루어야합니다.

+0

일반적인 오류 페이지를 지정한 다음 특정 오류 코드를 ''태그로 대체 할 수 있습니까? – Qix

+6

@Tomas : Tomcat 친구들은 당신과 같은 문제가있었습니다. 이것은 스펙에서 문자 그대로 언급되지 않았으며, 스펙의 14-10 절만이 나온다.'web.xml' XSD 파일은 ''과' '이 필수 대신에 옵션이되었다는 것을 증명한다. [issue 52135] (https://issues.apache.org/bugzilla/show_bug.cgi?id=52135)를 참조하십시오. – BalusC

+0

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd는 요소에 대해 하위를 지정하지 않으므로 위의 코드를 그대로 Servlet 2.5 web.xml에 붙여 넣으면 XSD 유효성 검사가 발생합니다 오류. 내가 그들에게 코멘트한다면, 그것은 잘 작동한다. 고마워! –

15

당신은 또한 같은 것을 수행 할 수 있습니다

<error-page> 
    <error-code>403</error-code> 
    <location>/403.html</location> 
</error-page> 

<error-page> 
    <location>/error.html</location> 
</error-page> 

오류 코드 403의 경우는 페이지 403.html를 반환, 그리고 다른 오류 코드는 페이지 error.html를 반환합니다.

0

또한 <exception-type>를 사용하여 예외 <error-page>을 지정할 수 있습니다, 아래의 예 :

<error-page> 
    <exception-type>java.lang.Exception</exception-type> 
    <location>/errorpages/exception.html</location> 
</error-page> 

또는 <error-code>를 사용하여 오류 코드를 매핑 :

는 서블릿 버전
<error-page> 
    <error-code>404</error-code> 
    <location>/errorpages/404error.html</location> 
</error-page> 
+0

투표 실패 이유가 표시되지 않습니다. –