Spring
-
Spring MVC - Servlet의 파일 업로드Spring/Spring MVC 2022. 2. 17. 21:34
Servlet의 파일 업로드 HttpServletRequest를 이용하여 HTTP Form 멀티파트 전송 방식으로 넘어온 데이터를 어떻게 이용하는지 살펴보자. multipart/form-data 전송 방식의 HTTP 요청 메시지 로그 확인 Servlet을 이용한 파일 업로드 HTML Form 전송 방식 Form의 Content-Type은 다음과 같이 2가지 방식이 있다. application/x-www-form-urlencoded - 일반적인 form 전송 방식 - form 태그 내의 입력된 일반 데이터들을 쿼리 파라미터 형식으로 메시지 바디에 담아 전송 multipart/form-data - 첨부파일을 포함한 전송 방식 - form 태그 내의 입력된 일반 데이터 문자들과 바이너리(첨부파일)를 함께 전송..
-
Spring MVC - Formatter 구현 및 사용 ( Formatter와 FormattingConversionService )Spring/Spring MVC 2022. 2. 17. 11:48
스프링에 Formatter 적용하기 Formatter FormattingConversionService 스프링에 Formatter 등록하고 사용하기 스프링이 제공하는 기본 Formatter Formatter Formatter는 문자에 특화된 타입 변환 Converter의 특별한 버전이다. 객체와 문자, 문자와 객체의 타입 변환시 특정 포멧으로 Locale 정보에 따라 문자를 출력하거나 또는 그 반대의 역할을 하는 특화된 기능이 포함된 인터페이스이다. Converter는 타입 변환이 범용적으로 쓰이는 타입 변환기라고 볼 수 있으며 Formatter는 문자에 특화된 타입 변환기라고 볼 수 있다. ex) 날짜 객체 -> 2022-03-02 16:14:00 참고 @RequestParam, @ModelAttrib..
-
Spring MVC - Converter 구현 및 사용 (Converter와 ConversionService)Spring/Spring MVC 2022. 2. 17. 01:26
Converter 구현 및 사용 Converter ConversionService 스프링에 Converter 추가하고 사용하기 뷰 템플릿에 Converter 적용하기 Converter와 ConversionService HTTP 요청 파라미터는 모두 문자로 넘어오지만 스프링에서 파라미터로 넘어온 문자들을 @RequestParam, @ModelAttribute, @PathVariable을 통해 문자, 숫자, Boolean, Enum등과 같은 타입을 자동으로 타입을 변환하여 바인딩을 해준다. 어떻게 타입변환이 일어나서 바인딩이 되는지 Converter와 ConversionService를 통해 알아보자. 참고 @RequestParam, @ModelAttribute, @PathVariable 등에서 사용 가능 메..
-
String MVC - API 예외처리(ExceptionHandlerExceptionResolver, ResponseStatusExceptionResolver, DeFaultHandlerExceptionResolver)Spring/Spring MVC 2022. 2. 14. 18:17
ResponseStatusExceptionResolver DefaultHandlerExceptionResolver ExceptionHandlerExceptionResolver @ControllerAdvice, @RestControllerAdvice API 예외처리 스프링 부트가 기본으로 제공하는 ExceptionResolver는 다음과 같다. ExceptionResolver 설명 우선 순위 ExceptionHandlerExceptionResolver @ExceptionHandler 처리 1 ResponseStatusExceptionResolver 상태 코드가 적용된 예외 처리 2 DefaultHandlerExceptionResolver 스프링 내부 기본 예외 처리 3 ResponseStatusExcept..
-
String MVC - 직접 구현해보는 API 예외처리Spring/Spring MVC 2022. 2. 14. 01:25
APi 예외 처리 직접 구현하기 API 예외 처리 - BasicErrorController 이용 API 예외 처리 - HandlerExceptionResolver 이용한 예외 처리 구현 API 예외 처리 - BasicErrorController 이용 API 예외처리 text/html 형식의 예외처리를 직접 구현하여 사용하면 예외 발생 시 응답 메시지로 4xx.html, 5xx.html와 같은 오류 페이지를 쉽게 클라이언트에게 보내줄 수 있다. 하지만 API의 경우에는 다르다. API 예외처리에서 응답 메시지에 오류 페이지를 전달해주면 JSON형식이 아니기 때문에 제대로 된 랜더링을 하지 못하게 된다. 때문에 각 오류 상황에 맞게 오류에 대한 정보들을 JSON으로 전달해줘야 한다. 스프링에서는 @Excep..
-
Spring MVC - BasicErrorController를 이용한 HTML 오류 페이지 처리와 오류 정보 이용하기(text/html)Spring/Spring MVC 2022. 2. 10. 18:04
스프링 부트의 오류 페이지 처리와 오류 정보 이용하기 스프링 부트의 오류 페이지 처리 오류 페이지에서 오류 정보 이용하기 스프링 부트의 오류 페이지 처리 스프링 부트는 서브릿에서 오류 페이지 처리했던 과정을 모두 기본으로 제공한다. 따라서 사용방법이 매우 간단하다. new ErrorPage("/error") 자동 등록 - /error 경로로 기본 오류 페이지를 설정한다. - 상태 코드와 예외를 설정하지 않으면 기본 오류 페이지가 호출된다. BasicErrorController 스프링 컨트롤러를 자동 등록 - ErrorPage에서 등록한 /error 를 매핑해서 처리하는 컨트롤러 위와 같은 오류 페이지 처리를 위한 작업을 스프링 부트에서 다 해주므로 개발자는 설정에 따라 HTML 오류 페이지만 만들어서 지..
-
Spring MVC - 서블릿 예외(Exception) 에 따른 필터(Filter)와 인터셉터(Interceptor) 처리Spring/Spring MVC 2022. 2. 10. 16:21
필터(Filter) DispatcherType를 이용한 중복 처리 제거 인터셉터(Interceptor)의 중복 처리 제거 서블릿 예외(Exception) 에 따른 필터와 인터셉터 처리 WAS에서는 등록된 ErrorPage의 상태 코드가 오면 해당 Path로 WAS에서 직접 URL 요청을 한다. 이때 의도치 않게 필터, 서블릿, 인터셉터도 다시 한번 호출되는데 로그인 인증 체크와 같은 경우 이미 처음 클라이언트 요청 시 필터나 인터셉터에서 로그인 체크를 완료하였다. 때문에 WAS에서 재요청 시 해당 필터와 인터셉트가 한번 더 호출되는 것은 매우 비효율적이다. 필터(Filter) DispatcherType를 이용한 중복 처리 제거 DispatcherType 중복 체크를 피하기 위해 필터에서 제공하는 옵션 어..
-
Spring MVC - 서블릿의 예외(Exception)에 따른 오류 페이지 등록(오류 페이지 작동 원리, 오류 페이지에서 오류 정보 이용하기)Spring/Spring MVC 2022. 2. 10. 15:07
Tomcat이 제공하는 기본 오류 페이지 오류 페이지 등록 오류 페이지 작동 원리 오류 페이지에서 오류 정보 이용하기 스프링 부트를 사용하면 간단하게 개발자가 만든 예외에 따른 오류 페이지를 클라이언트에게 보여줄 수 있다. 스프링 부트가 오류 페이지를 보여주는 복잡한 과정을 처리해주기 때문에 우리는 간단하게 오류 페이지를 등록할 수 있다. 그럼 내부에서 어떻게 오류 페이지를 호출하는 것일까? 서블릿에서 예외에 따른 오류 페이지를 호출하는 과정을 한번 알아보자. 서블릿의 예외(Exception)에 따른 오류 페이지 등록 일반적인 클라이언트의 요청에 따른 흐름은 다음과 같다. HTTP 요청 → WAS → 필터 → 서블릿 → 스프링 인터셉터 → 컨트롤러 웹 애플리케이션은 사용자 요청 별로 별도의 쓰레드가 할당..