프로그래밍/Servlet&JPS

03 Servlet : Error message 와 page 만들기

pupu91 2022. 8. 23. 19:15
반응형

 

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