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
- JPQL
- 김영한
- 자바
- 알고리즘
- java
- transaction
- Spring Boot
- spring
- 스프링 핵심 기능
- 그리디
- jpa
- db
- 스프링 핵심 원리
- JDBC
- pointcut
- QueryDSL
- 인프런
- kotlin
- springdatajpa
- Servlet
- Greedy
- http
- 백준
- 스프링
- Android
- Exception
- AOP
- Thymeleaf
- Proxy
- SpringBoot
Archives
- Today
- Total
개발자되기 프로젝트
[예외] SpringBoot - BasicErrorController 본문
1. BasicErrorController제공 기능.
- BasicErrorController 컨트롤러는 다음 정보를 model에 담아서 뷰에 전달한다.
- 뷰 템플릿에서 이 값을 활용해서 출력할 수 있다.
* timestamp: Fri Feb 05 00:00:00 KST 2021
* status: 400
* error: Bad Request
* exception: org.springframework.validation.BindException
* trace: 예외 trace
* message: Validation failed for object='data'. Error count: 1
* errors: Errors(BindingResult)
* path: 클라이언트 요청 경로 (`/hello`)
2. Thymeleaf에서 이용
- ${}로 바로 접근이 가능.
<li th:text="|timestamp: ${timestamp}|"></li>
<li th:text="|path: ${path}|"></li>
<li th:text="|status: ${status}|"></li>
<li th:text="|message: ${message}|"></li>
<li th:text="|error: ${error}|"></li>
<li th:text="|exception: ${exception}|"></li>
<li th:text="|errors: ${errors}|"></li>
<li th:text="|trace: ${trace}|"></li>
- 어 근데 mesage, exception, errors, trace가 제외되었다????
- 오류 관련 내부 정보들을 고객에게 노출하는 것은 좋지 않다.
- 고객이 해당 정보를 읽어도 혼란만 더해지고, 보안상 문제가 될 수도 있다.
- 그래서 중요한 정보가 null 로 넘어간 상태다.
- BasicErrorController 오류 정보를 model 에 포함할지 여부 선택 가능.
- application.properties
- server.error.include-exception=false : exception 포함 여부( true , false )
- server.error.include-message=never : message 포함 여부
- server.error.include-stacktrace=never : trace 포함 여부
- server.error.include-binding-errors=never : errors 포함 여부
- 기본 값이 naver 인 부분은 다음 3가지 옵션 사용 가능.
- never : 사용하지 않음
- always :항상 사용
- on_param : 파라미터가 있을 때 사용(queryParam으로 각 항목이 넘어갈 경우..)
- queryParam으로 trace넘겼더니 trace만 나옴.
3. 주의
- on_param 은 파라미터가 있으면 해당 정보를 노출한다.
- 디버그 시 문제를 확인하기 위해 사용할 수 있다.
- 그런데 이 부분도 개발 서버에서 사용할 수 있지만, 운영 서버에서는 권장하지 않는다.
- on_param 으로 설정하고 다음과 같이 HTTP 요청시 파라미터를 전달하면
- 해당 정보들이 model 에 담겨서 뷰 템플릿에서 출력된다.ㄷ
하지만 실무에서는 이것들을 노출하면 안됨!!!!
사용자에게는 오류 화면과 간 단한 오류 메시지를 보여주고
오류는 서버에 로그로 남기자!!
4.스프링 부트 오류 관련 옵션
- server.error.whitelabel.enabled=true
- 오류 처리 화면을 못 찾을 시, 스프링 whitelabel 오류 페이지 적용->스프링 처음 띄우면 맨날 보는거.ㅋ
- server.error.path=/error
- 오류 페이지 경로, 스프링이 자동 등록하는 서블릿 글로벌 오류 페이지 경로와
- BasicErrorController 오류 컨트롤러 경로에 함께 사용된다.
- 확장 포인트
- 에러 공통 처리 컨트롤러의 기능을 변경하고 싶으면
- ErrorController 인터페이스를 상속 받아서 구현하거나
- BasicErrorController 상속 받아서 기능을 추가하면 된다.
5. GitHub : 210927 errorPage, SpringBoot
'인프런 > [인프런] 스프링 MVC 2' 카테고리의 다른 글
[API예외] SpringBoot 기본 오류 처리 (0) | 2021.09.28 |
---|---|
[API예외] API 예외처리 (0) | 2021.09.28 |
[예외] SpringBoot - 오류페이지 (0) | 2021.09.27 |
[예외] Servlet 예외처리 - interceptor (0) | 2021.09.27 |
[예외] Servlet 예외처리 - 필터, DispatcherType (0) | 2021.09.27 |
Comments