ErrorController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @Controller public class ErrorController { @RequestMapping(value="/errorTest.do") public String errorTest(HttpServletRequest request, Model model) throws Exception { logger.debug("/errorTest.do 진입"); if(1==1) { //코드 에러나서 넣은 if문 throw new Exception("errorTest.do에서 에러발생"); } return null; } } | cs |
강제적인 에러발생을 위한 클래스파일입니다.
에러가 발생했을 경우,
'/errorTest.do'라는 로그가 기록되고, '/errorTest.do에서 에러발생'이라는 에러메시지가 생성됩니다.
CommonError.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @ControllerAdvice //error가 발생했을때 catch하는 Class public class CommonError { private static final Logger logger = LoggerFactory.getLogger(CommonError.class); private final String VIEW_PATH_DIR = "/error/"; @ExceptionHandler({Exception.class}) public ModelAndView getCommonException(Exception e, HttpServletRequest request) { ModelAndView mv = new ModelAndView(); mv.addObject("errorMessage", e.getMessage()); mv.setViewName(VIEW_PATH_DIR + "error"); return mv; } } | cs |
로직을 처리하면서 에러가 발생했을 경우 catch하여 익셉션처리하는 클래스입니다.
※ 404 에러는 위의 코드로 처리가 불가합니다!(web.xml에서 설정하여 처리해야 함)
ModelAndView에 에러메시지를 추가하고 error/error.jsp로 리턴해줍니다.
error/error.jsp
1 2 3 4 5 6 7 8 9 10 11 12 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>error</title> </head> <body> 에러메세지: ${errorMessage} </body> </html> | cs |
ErrorController에서 리턴받은 메시지를 출력하는 jsp페이지입니다.
결과화면
로그에 /errorTest.do 진입이라고 찍혀있습니다.
error.jsp에 에러메시지가 출력되었습니다.
'Back-End > Java' 카테고리의 다른 글
[Spring] execution (0) | 2017.12.28 |
---|---|
[Spring] AOP (0) | 2017.12.27 |
[Spring] Controller를 이용한 파일 업로드 (0) | 2017.12.22 |
[Spring] 로그인 여부에 따라 페이지 다르게 보여주기 (0) | 2017.12.18 |
[Spring] 웹에서 파라미터 전달받아 출력하기 (0) | 2017.12.14 |