Apache Tomcat의 에러처리관련 정리한 자료. URL에 % 문자열이 들어갈 경우 400오류가 발생하고, 이를 처리하는 방법을 찾아서 정리한 자료

1. web.xml 파일을 이용한 에러 처리 설정(기본적인 에러처리)

- web.xml 파일 하단에 error-page 태그를 넣고, 에러페이지를 정의하면 대부분 처리된다.

그러나, URL에 % 문자열가 들어간 경우 이상하게 400에러 처리가 되지 않았다.

<?xml version="1.0" encoding="UTF-8"?>

    ... 생략
    <!-- error 페이지 -->
    <error-page>
    <error-code>400</error-code>
    <location>/WEB-INF/jsp/common/error/400error.jsp</location>
    </error-page>

    <error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/common/error/404error.jsp</location>
    </error-page>

    <error-page>
    <error-code>403</error-code>
    <location>/WEB-INF/jsp/common/error/403error.jsp</location>
    </error-page>
    <error-page>

    <error-code>500</error-code>
    <location>/WEB-INF/jsp/common/error/500error.jsp</location>
    </error-page>
    <error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/WEB-INF/jsp/common/error/error.jsp</location>
    </error-page>
    
</web-app>

2. server.xml 파일에서 400 에러 처리

- server.xml에서 아래와 같이 Value 태그에 넣어서 html페이지로 정의해서 처리한다.

- showReport=”false”: 상세 에러내용을 표시하지 않음, 기업에서는 false로 설정해야함(default: true - 상세내용 표시)

- showServerInfo=”false”: 페이지 하단에 Tomcat 서버의 정보(버전 등)를 표시하지 않음(default: true - 서버정보 표시)

- errorCode: Tomcat 9.x이상 가능한 옵션으로 ““안에는 $CATALINA_BASE의 상대 경로 혹은 절대경로로 UTF-8로 된 HTML 에러페이지의 위치를 적는다.

<Value className="org.apache.catalina.valves.ErrorReportValve"
        errorCode.400="webapps/ROOT/error400.html"
        errorCode.0="webapps/ROOT/errorOthers.html"
        showReport="false"
        showServerInfo="false" />

참고자료: https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Error_Report_Valve

태그:

카테고리:

업데이트:

댓글남기기