728x90
utll패키지 및 CommonExceptionHandler 클래스 생성
CommonExceptionHandler 코드 작성
package kr.or.ddit.util;
import org.springframework.http.HttpStatus;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.NoHandlerFoundException;
import lombok.extern.slf4j.Slf4j;
//스프링에게 예외 처리하는 핸들러 클래스임을 알려줌
//ControllerAdvice : Controller와 동일한 역할 수행. 예외 발생 시 예외만 처리
//ControllerAdvice("특정패키지") -> 특정패키지 이하에서 catch되지 않은 Exception발생 시 이 클래스가 동작
//Controller에서 Exception 이 발생한 것을 DispatcherServlet -> JVM으로 가기전에 먼저 예외를 잡음
@Slf4j
@ControllerAdvice("package")
public class CommonExceptionHandler {
//예외에 대한 내용을 Model 객체를 이용해서 뷰(View, jsp)로 전달 할 수 있음
//사용자가 설정한 예외 타입이 해당되는 예외가 발생 시 handle()메소드에서 처리함
//ExceptionHandler(Exception.class) : RequestMapping과 동일한 역할을 수행
// @ExceptionHandler(Exception.class)
// public String handle(Exception e, Model model) {
// log.error("handle->e : " + e.toString());
//
// model.addAttribute("exception", e);
//
// //forwarding
// return "error/errorCommon";
// }
//404만 처리하는 메소드
@ExceptionHandler(NoHandlerFoundException.class)//핸들링된 exception일때 처리를 해주자
@ResponseStatus(HttpStatus.NOT_FOUND)
public String handle(Exception e, Model model) {
log.error("handle->e : " + e.toString());
model.addAttribute("exception", e);
//forwarding
return "error/error404";
}
}
Controller에 메소드에 맞는
폴더 및 jsp생성
errorCommon.jsp 코드작성
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!--
Controller에서 받아온 메소드
model.addAttribute("exception", e);
-->
<section class="content">
<div class="error-page">
<h2 class="headline text-danger">${exception.getMessage()}</h2>
<div class="error-content">
<c:forEach var="stack" items="${exception.getStackTrace() }">
<h3>
<i class="fas fa-exclamation-triangle text-danger"></i>
${stack.toString() }
</h3>
</c:forEach>
<p>
We will work on fixing that right away. Meanwhile, you may <a
href="/">return to dashboard</a> or try using the search form.
</p>
</div>
</div>
</section>
web.xml에 가서
<!-- 404오류를 처리할 수 있도록 함 -->
<init-param>
<param-name>throwExceptionIfNoHandlerFound</param-name>
<param-value>true</param-value>
</init-param>
이 코드 작성
그리고 재가동 했을 떄 오류가 안나면 됨
'Spring > Spring 기초' 카테고리의 다른 글
Spring 시큐리티 연습해보기 (0) | 2023.08.11 |
---|---|
Spring 시큐리티 환경설정 (0) | 2023.08.11 |
web.xml를 통해서 HTTP오류처리(상태코드를 사용해서 처리) (0) | 2023.08.11 |
Spring 트랜젝션 제어 처리 (0) | 2023.08.11 |
AOP log(횡단관심사) (0) | 2023.08.11 |