728x90
그 전부터 에러페이지 관련하여 한 번 정리하고 싶었는데, 이번에 마침 관련 업무를 할 일이 있었어서 나눠서 정리해보려 합니다.
어노태이션[@ResponseStatus]
예외 클래스 자체에 응답 상태 코드를 선언하여, web.xml의 에 매핑하는 방식이다.
예제
<예외 클래스>
@ResponseStatus(value = HttpStatus.FORBIDDEN)
public class ExampleForbiddenException extends RuntimeException {
//…이하 생략…
}
위와 같이 예외 클래스에 응답코드를 선언해두고, 처리 로직에서 해당 예외를 던진다.
<처리 클래스>
@GetMapping(value = "/example/error/throwExampleForbiddenException.do")
public String throwException(final HttpServletResponse response) {
if (true) {
throw new ExampleForbiddenException("@ResponseStatus가 HttpStatus.FORBIDDEN으로 설정되어 있다.");
}
return "/example/fakeView"; // 여기는 실행되지 않는다.
}
<web.xml>
<error-page>
<error-code>403</error-code>
<location>/WEB-INF/jsp/example/error/forbiddenError.jsp</location>
</error-page>
장단점 설명
장점 :
- 쉽고 간단하다. (예외에 응답 상태 코드를 지정하여, 바로 매핑된 에러 페이지를 바로 연결하면 끝)
- ExceptionResolver가 없어도 동작한다.
- ExceptionResolver의 종류에 따라서는 @ResponseStatus를 이용하기도 한다.
단점 : 로그 남기기 등의 추가 처리를 일원화하기 어렵다.
총평 : 오류가 나도 해당 정보를 확인할 수 없다는 점 때문에 단독으로 쓰일 일은 별로 없다.
참고
- [Using Spring @ResponseStatus to Set HTTP Status Code]-[3. With Error Handlers] : 예제 코드.
반응형
'컴 이것저것 > Java' 카테고리의 다른 글
파일 전송 시 boundary -httpClient (0) | 2024.09.03 |
---|---|
<Spring> Scheduler (0) | 2022.11.28 |
javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (1) | 2022.08.29 |
Spring -ErrorPage[3] -@ControllerAdvice (0) | 2022.08.04 |
Spring -ErrorPage[2] -ExceptionResolver (0) | 2022.08.03 |