Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 주린이
- 백준
- etf
- 금리인하
- mco
- 기업분석
- 무디스
- 알고리즘
- 오버라이딩
- javascript
- 그리디 알고리즘
- 객체지향
- 잉여현금흐름
- 금리인상
- 현금흐름표
- 프로그래머스
- 미국주식
- 제태크
- Java
- 배당성장
- S&P500
- 다형성
- 주식
- XLF
- 자바
- FCF
- StringBuffer
- object
- 접근제어자
- 인플레이션
Archives
- Today
- Total
오늘의하루
Servlet의 예외 처리하는 방법 본문
Exception
요청 > WAS > 필터 > 서블릿 > 인터셉터 > 컨트롤러(예외발생) > 인터셉터 > 서블릿 > 필터 > WAS
- 서버 내부에서 처리할 수 없는 오류가 발생했다고 생각하여 Http 상태코드 500 반환
response.sendError(Http 상태코드, 오류메시지)
요청 > WAS > 필터 > 서블릿 > 인터셉터 > 컨트롤러(sendError()) > 인터셉터 > 서블릿 > 필터 > WAS(sendError 호출 기록 확인 / 지정된 URL로 다시 요청) > (필터) > 서블릿 > 인터셉터 > 컨트롤러 > 뷰
- sendError를 호출하면 response내부에는 오류가 발생했다는 상태를 저장한다.
- 서블릿 컨테이너는 응답하기 전에 response에 sendError가 호출되었는지 확인한다.
- sendError가 호출되었다면 오류코드에 맞추어 기본 오류 페이지를 보여준다.
- 이때 WAS는 다시 요청하는거 뿐만 아니라 오류 정보를 request의 attribute에 추가해서 요청하게 된다.
- 첫 요청에서는 DispatcherType이 REQUEST이지만 sendError()후 재 요청할 경우 DispatcherType은 ERROR이다.
정리
필터는 DispatcherType에 따라 sendError()후 호출되게 할 수 도 있고 막을 수 도 있다.
- setDispatcherType(DispatcherType.REQUEST, DispatcherType.ERROR) 이런식으로 추가한다.
- 아무것도 추가하지 않으면 기본값은 REQUEST다.
인터셉터는 기본적으로 DispatcherType에 영향이 없고 항상 호출된다.
- 막으려고 excludePathPatterns에 sendError 호출 후 response에 저장되있는 경로를 추가하면 된다.
'Spring' 카테고리의 다른 글
Spring 서비스 추상화와 단일 책임 원칙 (0) | 2023.10.16 |
---|---|
Spring boot 오류 페이지 (0) | 2023.08.30 |
[Spring] 필터와 인터셉터 (0) | 2023.08.29 |
[Spring 검증] @ModelAttribute와 @RequestBody의 차이 (0) | 2023.08.28 |
Spring HandlerMapping & Adapter, ViewResolver (0) | 2023.08.23 |
Comments