[Tomcat] 9.0이상에서 에러 처리방법
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
댓글남기기