본문 바로가기
dev/Spring

[Spring] Controller Exception처리

by dev_Step 2022. 1. 20.

 

 

Controller 작성시 예외사항을 고려하면 처리해야할 사항이 많아 지는데 

처리하는 방법으로 

 

     @ExceptionHandler와 @ControllerAdvice를 이용한 처리

     @ResponseEntity를 이용한 예외메시지 구성 

 

이있다.

 

@ControllerAdvice 

- AOP(Aspect-Oriented-Programming)를 이용하는 방식으로, 공통적인 관심사(coss-concern)는 분리하자는개념으로

공통적인 예외사항에 대해 @ControllerAdvice를 이용하여 분리하는 방식입니다.

 

@ControllerAdvice는 해당 객체가 스프링 컨트롤러에서 발생하는 예외를 처리하는 존재임을 명시하는 용도로 사용하며,

@ExceptionHandler는 해당 매서드가 ()들어가는 예외타입을 처리함을 의미합니다.

 

JSP에서도 에러에 대한구체적인 메시지를 보고 싶다면  Model을 통해서 전달하는것이 좋습니다.

 

해당 ~.exception 패키지는 servlet-context.xml에서 에서 인식하지 않기 때문에 <component-scan>을 이용하여 

해당 패키지 내용을 관리하도록 해야 합니다.

servlet-context.xml

 

 

 

 

 

2.번째 방법으론 web.xml을 사용하는 방법으로 

 

*에러 페이지 호출 우선순위*

1.  jsp 페이지 내에 errorPage 선언했을경우

2. Web.xml에서 Exception-type에 선언한 에러와 일치할 경우

3. Web.xml에서 error-code에 선언한 코드와 일치할 경우

4. 1~3 일치하는 내용이 없다면 기본 에러 페이지 제공

 

<error-page>  <error-type> <error-code> <location> 등을 사용해서도 에러처리를 할 수 있다.

web.xml에 

<error-page> 태그를 열고

   <error-code> 어떤 에러일때 </>

   <location> 실행될 에러페이지 또는 컨트롤러 URL맵핑 (메서드 경로까지) </>

</>

이때 <error-page>말고 <exception-type> 태그를 사용하여 에러 타입을 지정해줄수있다 

 

ex) <exception-type>java.lang.Throwable</exception-type> 

 

javax.servlet.error.status_code     : 에러 상태 코드 출력

javax.servlet.error.exception_type : 예외처리 클래스 출력

javax.servlet.error.message         : 오류 메세지 출력

javax.servlet.error.request_uri      : 문제가 되는 request uri 정보를 출력

javax.servlet.error.exception        : 발생한 예외처리 내용 출력

javax.servlet.error.sevlet_name     : 에러가 발생한 서블릭 명 출력

 

 

error page를 전환시킬 contorller를 작성하고 web.xml에 적은 URL을 맵핑시켜준다,

 

 

return 되는 "jsp" 를 설정해준다.

Model을 통해서 값을 .jsp로 가지고 갈수 있다.

 

 

/sample/404.jsp 실행결과

'dev > Spring' 카테고리의 다른 글

[Spring] Bean 생성  (0) 2022.03.04
[JUnit] JUnit 사용하여 단위테스트 하기  (0) 2022.03.02
[Spring] file-Upload  (0) 2022.01.20
[Spring] Controller Return Type  (0) 2022.01.20
[Spring] Model  (0) 2022.01.20