반응형
response.sendError(에러타입, 메세지)
ex) response.sendError(404, "없는 페이지입니다. 경로를 확인해주세요.")
1. HTML 작성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exception Handler</title>
</head>
<body>
<h1 align="center">Exception Handler</h1>
<ul>
<li><a href="show404Error"> 404 에러확인 </a></li>
<li><a href="show500Error"> 500 에러확인 </a></li>
</ul>
</body>
</html>
2. web.xml에 error-page 작성
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>chap05-exception-handler</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
에러코드와 매핑할 페이지 설정
<error-page>
<error-code>404</error-code>
<location>/showErrorPage</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/showErrorPage</location>
</error-page>
</web-app>
3. error 서블릿 작성
@WebServlet("/show404Error")
public class Show404ErrorServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendError(404, "페이지를 찾을 수 없습니다");
}
}
반응형
500 error 서블릿 작성
@WebServlet("/show500Error")
public class Show500ErrorServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendError(500, "500번 에러입니다");
}
}
4. 보여 줄 에러페이지 서블릿 생성
: reponse.sendError만 작성하면 톰캣의 에러페이지가 나오기 때문에 사용할 에러페이지를 만들어 주어야 함.
클라이언트 파라미터는 모드 String 타입
서블릿에서 서블릿으로 위임시 모두 오브젝트 타입이기 때문에 다운 캐스팅 해야함.
@WebServlet("/showErrorPage") /* web.xml 에 작성한 location 안의 이름으로 맵핑!*/
public class ExceptionHandlerServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
에러 코드와 메세지 호출 후 저장
Integer statusCode = (Integer)request.getAttribute("javax.servlet.error.status_code");
String errorMessage = (String)request.getAttribute("javax.servlet.error.message");
StringBuilder errorPage = new StringBuilder();
errorPage.append("<!doctype html\n")
.append("<html>\n")
.append("<head>\n")
.append("</head>\n")
.append("<body>\n")
.append("<h1 align = 'center'>")
.append(statusCode)
.append("-")
.append(errorMessage)
.append("</h1>")
.append("</body>\n")
.append("</html>");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.print(errorPage.toString());
out.flush();
out.close();
반응형
'프로그래밍 > Servlet&JPS' 카테고리의 다른 글
06 Servlet : Session과 Cookie (0) | 2022.08.23 |
---|---|
05. Servlet : sendRedirect (0) | 2022.08.23 |
04. Servlet : forward (0) | 2022.08.23 |
02 . Servlet : 서블릿 메소드 (0) | 2022.08.23 |
01. Servlet : 서블릿개념과 동작구조 (0) | 2022.08.23 |