온 코딩

[Spring](게시판 예제) 어노테이션 기반 예외처리(xml예외처리) 본문

복습 ARCHIVE/모델별 프로젝트

[Spring](게시판 예제) 어노테이션 기반 예외처리(xml예외처리)

SummerON 2021. 6. 28. 16:28

1. 어노테이션 사용을 위한 mvc 추가 (presentation-layer.xml)

mvc 네임스페이스 추가 후 어노테이션드라이븐 앨리먼트 설정

<!-- 어노테이션 추가 -->
    <mvc:annotation-driven></mvc:annotation-driven>

 

2. 예외처리 클래스 작성

@ControllerAdvice("적용범위") - CommonExceptrionHandler 객체 자동 생성 

@ExceptrionHandler(예외처리클래스) - 어노테이션으로 지정한 메서드 실행

package com.hhw.biz.view.common;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

@ControllerAdvice("com.hhw.biz.view")
public class CommonExceptionHandler {

	public CommonExceptionHandler() {
	}
	
	@ExceptionHandler(ArithmeticException.class)
	public ModelAndView handleArithmeticException(Exception e){
		ModelAndView mav = new ModelAndView();
		mav.addObject("exception", e);
		mav.setViewName("/common/arithmeticError.jsp");
		return mav;
	}
	@ExceptionHandler(NullPointerException.class)
	public ModelAndView handleNullPointerException(Exception e){
		ModelAndView mav = new ModelAndView();
		mav.addObject("exception", e);
		mav.setViewName("/common/nullPointerError.jsp");
		return mav;
	}
	
	@ExceptionHandler(Exception.class)
	public ModelAndView handleException(Exception e){
		ModelAndView mav = new ModelAndView();
		mav.addObject("exception", e);
		mav.setViewName("/common/error.jsp");
		return mav;
	}
	
}

 

3. 예외처리 출력화면 작성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 에러에러 
<hr>
${exception.message }
</body>
</html>

 

* xml 기반 예외처리 (presentation-layer.xml)

Comments