본문 바로가기
미들웨어/Apache,Tomcat

Tomcat default error page

by _Nate 2023. 6. 28.
반응형

특수문자등을 호출하는 경우 context로 해당 URI전달이 안돼 application의 error-page가 적용되지 않는 경우가 있다.

이런경우 Tomcat 엔진 자체의 설정을 통해 error-page를 내려줘야 한다.

 


1. 일반적인 error-page 동작

  • web.xml
  <error-page>
    <error-code>400</error-code>
    <location>/error.html</location>
  </error-page>
  <error-page>
    <error-code>403</error-code>
    <location>/error.html</location>
  </error-page>
  <error-page>
    <error-code>404</error-code>
    <location>/error.html</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/error.html</location>
  </error-page>
  • status code와 보여줄 error page의 정보를 작성한다.

  • 404 error가 발생한 경우 error.jsp가 정상적으로 호출된다.

 

2. 특수문자 등 비정상 URI를 호출할 경우

  • %5c와 같은 특수문자 호출시 400error가 발생하지만 web.xml에 설정한 error-page설정이 동작하지 않는다.

  • Tomcat 엔진 자체의 기본 error page가 호출된다.

 

3. Tomcat default errorpage 설정

  • 위의 사례와 같이 Tomcat 엔진 자체에서 error page처리가 필요한 경우 설정한다.
<Host>
  <Valve className="org.apache.catalina.valves.ErrorReportValve"
         showReport="false"
         showServerInfo="false"
         errorCode.400="/app/test/error.html"
         errorCode.0="/app/test/error.html" />
</Host>
  • className : catalina.jar내부에 포함된 ErrorReportValve class를 사용
  • showReport : Error의 상세내용을 브라우져에 노출할지 여부
  • showServerInfo : Tomcat 버전 등 서버정보 노출여부
  • errorCode.0 : error발생시 보여줄 error page 설정(html만 가능)
  • errorCode.400 : 특정 code에 대한 error page가 별도로 있다면 statuscode를 입력하여 작성(html만 가능)

  • 정상적으로 error page가 호출된다.
반응형

위의 기능은 Tomcat9에서 추가되었으며 Tomcat8.5.84 이후 버전에서도 사용 가능하다.

반응형