JSP에서 에러(Exception)이 발생하면 에러 코드와 함께 에러 페이지를 보여준다.
- 이때 에러 페이지가 아닌 다른 페이지를 보여주자.
- JSP 에는 에러 페이지를 처리하는 방법으로 <%@page errorPage ="error.jsp"%>, <%@page isErrorPage="true" %> 가 있다.
page 디렉티브 <%@ page %>
- 하지만 JSP 2.0 또는 최신 웹 컨테이너들은 이 기능을 처리하지 못할 수 있다.
- 그렇기 때문에 에러 페이지 처리를 서블릿에서 처리하기 위해 web.xml 에서 처리하는 방법을 사용한다.
<error-page>
<error-code>404</error-code>
<location>/error/404code.jsp</location>
</error-page>
- 위와 같이 web.xml에 기술되어 있으면 404 에러 발생시 404code.jsp 페이지로 이동한다. 이때 요청 페이지는 사용자가 요청한 페이지를 그대로 유지한다.
- 에러페이지인 404code.jsp 를 처리하기 위해서는 404code.jsp 에 아래와 같은 처리가 필요하다.
<%
response.setStatus(HttpServletResponse.SC_OK);
%>
- 이것은 현재 페이지가 정상적으로 응답되는 페이지임을 지정하는 코드다. 이 코드를 생략하면 웹 브라우저는 자체적인 에러 페이지를 표시한다.
- 각 주요 에러코드별로 처리할 에러 페이지를 지정하며, 기술하지 않은 그 외의 에러에 대해서도 처리할 수 있다.
- web.xml 에러 페이지 처리 예
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>TEST</display-name>
<!-- 시작 페이지 -->
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<!-- 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>
출처 : http://hyeonstorage.tistory.com/