o 설정 내용
1. {Context}/WEB-INF/web.xml 수정
2. {docBase}/{errorHandlingDirectory}/{errorPage} 작성
- Error Page의 기준 Path는 Context에 설정한 docBase가 되며,
{errorHandlingDirectory}는 임의로 지정하면 된다.
1. 해당 Context의 WEB-INF에 있는 web.xml에 다음 추가
<web-app>
... ...
... ...
<error-page>
<error-code>404</error-code><location>/error/error404.jsp</location>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/error/errorNullPointer.jsp</location>
</error-page><error-page>
<error-code>500</error-code>
<location>/error/500.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error/exception.jsp</location>
</error-page><error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/servlet/ErrorServlet2</location>
</error-page>... ...
... ...
</web-app>
2.해당 Context의 docBase에 Error Page 작성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
Status를 200(OK)로 Response하지 않으면
브라우져의 Default 404 Error Page가 뜨게 된다.
response.setStatus( HttpServletResponse.SC_OK );
%>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>404 Error</title>
</head><body>
<center><B>요청하신 Page를 찾을 수 없습니다.</B></center>
</body>
</html>
* 참고 사항
web.xml 의 <error-code>, <exception-type> 엘리먼트에 설정된 오류의 <location> 지정 서블릿/JSP 가 수행될 때 발생된 오류에 대한 정보가 HttpServletRequest 객체 통해 전달됨.
- javax.servlet.error.status_code : 오류 코드
- javax.servlet.error.exception_type : 예외 타입 정보 (Class 형 객체)
- javax.servlet.error.message : 예외 메시지
- javax.servlet.error.exception : 발생된 예외 객체
- javax.servlet.error.request_uri : 오류 발생 파일의 URI
==> 사용법
Object exObj = req.getAttribute("javax.servlet.error.exception");
String uri = "";
if(uriObj != null) uri= uriObj.toString();
out.print("<br/>");
out.print(request.getAttribute("javax.servlet.error.exception_type"));
out.print("<br/>");
out.print(request.getAttribute("javax.servlet.error.message"));
out.print("<br/>");
out.print(request.getAttribute("javax.servlet.error.exception"));
out.print("<br/>");
out.print(request.getAttribute("javax.servlet.error.request_uri"));
댓글 없음:
댓글 쓰기