만약 localhost:8090/api/response-handler-ex?data=111 라는 url에서 data가 Interger 라면 localhost:8090/api/response-handler-ex?data=qqq 라고 넣으면 typeMissMatch 오류가 날 것이다. 그럼 서버에서 오류가 나기 때문에 원래는 500이 나야하지만, 사용자가 잘못 넣은 값이기 때문에 400으로 처리하는 것이 맞을 것이다. 하지만 부트는 타입미스매치를 자동으로 400으로 처리해 준다. 아래의 디폴트핸들러익셉션리졸버가 그것을 가능하게 해준다 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompil..
만약 localhost:8090/api/response-handler-ex?data=111 라는 url에서 data가 Interger 라면 localhost:8090/api/response-handler-ex?data=qqq 라고 넣으면 typeMissMatch 오류가 날 것이다. 그럼 서버에서 오류가 나기 때문에 원래는 500이 나야하지만, 사용자가 잘못 넣은 값이기 때문에 400으로 처리하는 것이 맞을 것이다. 하지만 부트는 타입미스매치를 자동으로 400으로 처리해 준다. 아래의 디폴트핸들러익셉션리졸버가 그것을 가능하게 해준다 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompil..
package hello.exception.resolver; import com.fasterxml.jackson.databind.ObjectMapper; import hello.exception.exception.UserException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import java.io...
api 요청이 실패할 경우에는 html 으로 실패값이 와서는 안된다. 일반 예외와 같이 boot는 BasicError 컨트롤러를 이용해서 api 실패 예외처리도 해준다. Request문서의 Accept가 application/json일 경우 (html이 아닐 경우 아래의 메소드로 작동한다.) 1. html 일경우 2. 그 외 @RequestMapping(produces = MediaType.TEXT_HTML_VALUE) public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) { HttpStatus status = getStatus(request); Map model = Collections .unmodi..
api 예외처리를 위해 간단히 api컨트롤러를 만들었다. package hello.exception.api; import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController public class ApiExceptionController { @GetM..
어떠한 등록도 안한 경우 Spring boot에서는 기본적으로 /error를 호출하게 된다. 그 컨트롤러의 정체는 스프링 부트에서 제공하는 BasicErrorController이다. 스프링 부트는 이런 과정을 모두 기본으로 제공한다. ErrorPage 를 자동으로 등록한다. 이때 /error 라는 경로로 기본 오류 페이지를 설정한다. new ErrorPage("/error") , 상태코드와 예외를 설정하지 않으면 기본 오류 페이지로 사용된다. 서블릿 밖으로 예외가 발생하거나, response.sendError(...) 가 호출되면 모든 오류는 /error 를 호출하게 된다. BasicErrorController 라는 스프링 컨트롤러를 자동으로 등록한다. ErrorPage 에서 등록한 /error 를 매핑..
Interceptor에 오류페이지를 타지 않게 하는 방법은 간단하다. 다만 이 방법은 오류페이지에 대한 컨트롤러를 따로 사용 할 때에만 유용한 방법 같다 package hello.exception; import hello.exception.filter.LogFilter; import hello.exception.interceptor.LogInterceptor; import jakarta.servlet.DispatcherType; import jakarta.servlet.Filter; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; impor..
먼저 예제로 에러컨트롤러를 만든다. package hello.exception.servlet; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import java.io.IOException; @Slf4j @Controller public class ServletExController { @GetMapping("/error-ex") public void errorEx(){ throw new RuntimeExcep..
- Total
- Today
- Yesterday
- thymleaf
- SpringBoot
- JPA
- 향해플러스
- React
- 항해플러스
- 항해99
- filter
- 향해99
- Java
- ArgumentResolver
- Intercepter
- 로그인
- reject
- 스프링부트
- react실행
- 스프링공부
- 인터셉터
- hypertexttransferprotocol
- 리터럴
- 백엔드 개발자 공부
- BindingResult
- jpa api
- 컨트
- 예외처리
- exception
- HTTP
- rejectValue
- 향해플러스백엔드
- 백엔드 개발자 역량
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |