Controller 작성시 예외사항을 고려하면 처리해야할 사항이 많아 지는데
처리하는 방법으로
@ExceptionHandler와 @ControllerAdvice를 이용한 처리
@ResponseEntity를 이용한 예외메시지 구성
이있다.
@ControllerAdvice
- AOP(Aspect-Oriented-Programming)를 이용하는 방식으로, 공통적인 관심사(coss-concern)는 분리하자는개념으로
공통적인 예외사항에 대해 @ControllerAdvice를 이용하여 분리하는 방식입니다.
@ControllerAdvice는 해당 객체가 스프링 컨트롤러에서 발생하는 예외를 처리하는 존재임을 명시하는 용도로 사용하며,
@ExceptionHandler는 해당 매서드가 ()들어가는 예외타입을 처리함을 의미합니다.
JSP에서도 에러에 대한구체적인 메시지를 보고 싶다면 Model을 통해서 전달하는것이 좋습니다.
해당 ~.exception 패키지는 servlet-context.xml에서 에서 인식하지 않기 때문에 <component-scan>을 이용하여
해당 패키지 내용을 관리하도록 해야 합니다.
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로 가지고 갈수 있다.
'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 |