반응형
@ControllerAdvice를 이용한 예외 처리
앞서 배운 @ControllerAdvice를 이용해서 존재하지 않는 도서 분류를 요청하는 경우
예외 처리를 구현합니다.
CommonException.java
com.springmvc.exception 패키지에서 CommonException 클래스를 생성합니다.
package com.springmvc.exception;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
@ControllerAdvice
public class CommonException {
@ExceptionHandler(RuntimeException.class)
private ModelAndView handleErrorCommon(Exception e) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("exception",e);
modelAndView.setViewName("errorCommon");
return modelAndView;
}
}
전역 예외 처리를 위해서 @ControllerAdvice를 선언합니다.
컨트롤러에서 발생되는 예외 처리 메소드인 handleErrorCommon() 메소드를 선언합니다.
modelAndView 인스턴스에서 exception에 RuntimeException을 저장하고
뷰 이름으로 errorCommon.jsp 파일이 출력되도록 합니다.
errorCommon.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<link href="<c:url value="/resources/css/bootstrap.min.css"/>" rel="stylesheet">
<title>예외처리</title>
</head>
<body>
<nav class="navbar navbar-expand navbar-dark bg-dark">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="../home">Home</a>
</div>
</div>
</nav>
<div class="jumbotron">
<div class="container">
<h2 class="alert alert-danger">요청한 도서가 존재하지 않습니다.</h2>
</div>
</div>
<div class="container">
<p>${exception }</p>
</div>
<div class="container">
<p><a href="<c:url value="/books"/>" class="btn btn-secondary">도서목록 »</a></p>
</div>
</body>
</html>
실행 결과
다음과 같이 존재하지 않는 도서 목록을 검색했을 때 errorCommon.jsp 페이지가 잘 출력되는 것을 확인합니다.
반응형
'SPRING' 카테고리의 다른 글
[SPRING]#39 도서 쇼핑몰 구현 (로그 기록2) (0) | 2024.01.17 |
---|---|
[SPRING]#38 도서 쇼핑몰 구현 (로그 기록1) (0) | 2024.01.16 |
[SPRING]#36 도서 쇼핑몰 구현 (예외 처리5) (0) | 2024.01.16 |
[SPRING]#35 도서 쇼핑몰 구현 (예외 처리4) (0) | 2024.01.16 |
[SPRING]#34 도서 쇼핑몰 구현 (예외 처리3) (0) | 2024.01.15 |