예외 처리

jinkyung·2021년 2월 19일
0

Spring

목록 보기
18/24

예외 처리를 위한 방법으로 XML과 어노테이션을 사용할 수있다.

Annotation 기반

LoginController

로그인 할 때 아이디가 null이거나 입력값이 없다면 오류가 나도록 처리했다.

로그인 아이디를 공백으로 로그인 하면 뜨는 오류 페이지.
그러나 내부의 정보를 보여주는 것은 보안상 좋지 않다.

namespaces - mvc 추가


예외의 종류에 따라 적절한 예외 화면이 서비스될수 있도록 예외 처리 클래스를 만들었다.

CommonExceptionHandler

package com.springbook.view.common;

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

// "com.springbook.view" 패키지 아래에서 일어나는 예외를 처리한다.
@ControllerAdvice("com.springbook.view")
public class CommonExceptionHandler {
	
	@ExceptionHandler(ArithmeticException.class)
	public ModelAndView handlerArithmeticException(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;
	}
	
	
}

예외에 대한 화면을 만든다.
Error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>기본 에러 화면</title>
</head>
<body bgcolor="#ffffff" text="#000000">
	<!-- 타이틀 시작 -->
	<table width="100%" border="1" cellspacing="0" cellpadding="0">
		<tr>
			<td align="center" bgcolor="orange">
				<b>기본 에러 화면입니다</b>
			</td>
		</tr>
	</table>
	<br>
	<!-- 에러 메시지 -->
	<table width="100%" border="1" cellspacing="0" cellpadding="0" align="center">
		<tr>
			<td align="center">
				<br><br><br><br><br>
                // e (exception) 안의 getmessage라는 메서드를 호출한 것.
				Message : ${exception.message }
				<br><br><br><br><br>
			</td>
		</tr>
	</table>
</body>
</html>

화면


XML 기반

xml파일에 설정 코드 추가

0개의 댓글