Spring/Spring MVC 7

[Spring MVC] 2. Filters

1. Form DataServlet API는 POST 요청에 대해서만 request.getParamaeter*() 사용 가능 FormContentFilterPUT, PATCH, DELETE 요청은 서블릿 스펙상으로는 바디 패싱을 하지 않음PUT, PATCH, DELETE 요청에서도 body를 파싱하여 getParamaeter*()로 접근 가능하게 함body를 application/x-www-form-urlencoded로 파싱함getParamaeter*()로 인해 FormData를 @RequestParam, @ModelAttribute에서 바인딩할 수 있음 예제) FormContentFilter 등록더보기public class MyWebInitializer implements WebApplicationIn..

Spring/Spring MVC 2025.04.11

[Spring MVC] 4-3. Handler Methods: Controller Advice

1. Controller Advice특정 컨트롤러나 전체 컨트롤러에 걸쳐 로직을 중앙화하는데 사용되는 어노테이션입니다.예외 처리, 바인딩 설정, 모델 어트리뷰트 설정 등에 사용됩니다.@ExceptionHandler, @InitBinder, @ModelAttribute 적용 범위기본적으로 해당 메서드가 선언된 @Controller 내에서만 적용됩니다.@ControllerAdvice나 @RestControllerAdvice 클래스 내에서 선언된 경우, 어느 컨트롤러에서든 적용될 수 있습니다. 빈 등록@ControllerAdvice@ComponentScan 메타-어노테이션되어 있습니다.컴포넌트 스캔을 통해 스프링 빈으로 등록될 수 있습니다. @RestControllerAdvice@ControllerAdvice..

Spring/Spring MVC 2023.10.17

[Spring MVC] 5. @InitBinder

1. @InitBinderWebDataBinder 객체를 초기화하는 데 사용되는 메서드를 표시하는 어노테이션입니다.컨트롤러에서 요청 데이터의 바인딩과 변환을 제어하고 사용자 정의하는데 유용한 도구입니다. WebDataBinder스프링의 데이터 바인딩과 유효성 검사 기능을 제공합니다.설정을 조정하여 특정 데이터 형식이나 커스텀 타입을 제대로 처리할 수 있습니다. 기능문자열 기반 요청 값 변환문자열 기반 요청 값을 컨트롤러 메서드의 타겟 타입으로 변환합니다.요청 파라미터, 경로 변수, 헤더, 쿠키 등 요청 파라미터 바인딩클라이언트로부터의 요청 파라미터를 모델 객체에 바인딩합니다. 모델 객체 값 포맷팅HTML 폼을 렌더링 할 때 모델 객체 값을 문자열로 포맷합니다. 2. PropertyEditor, Conve..

Spring/Spring MVC 2023.10.17

[Spring MVC] 4-2. Handler Methods: Type Conversion

1. Type ConversionString-based Request Input어노테이션이 붙은 컨트롤러 메서드 인수들은 대개 문자열 기반의 요청 입력을 나타냅니다. Type Conversion인수가 String 이외의 다른 것으로 선언되었을 경우 타입 변환이 필요할 수 있습니다.이러한 변환은 구성된 컨버터를 기반으로 자동으로 적용됩니다. 2. Convertion TypesDefault Supported Types기본적으로, int, long, Date 등의 단순한 타입들이 지원됩니다. Customizing Type Conversion타입 변환을 사용자 정의하려면 WebDataBinder를 통해 할 수 있습니다.또는 FormattingConversionService에 Formatter를 등록하여 변환을 ..

Spring/Spring MVC 2023.10.17

[Spring MVC] 4-1. Handler Methods: Method Arguments

1. Method ArgumentsSpring MVC에서 지원하는 handler method의 argument 입니다. Class클래스설명WebRequestNativeWebRequest직접 Servlet API를 사용하지 않고 요청 매개변수 및 요청 및 세션 속성에 액세스할 수 있습니다.jakarta.servlet.ServletRequestjakarta.servlet.ServletResponse웹 요청과 응답에 대한 기본 인터페이스입니다.다양한 요청 및 응답 유형에 대한 액세스를 제공합니다.HttpServletRequest와 같은 구체적인 서블릿 요청 유형으로 캐스팅될 수 있습니다.(ServletRequest, HttpServletRequest)(Spring’s MultipartRequest, Multi..

Spring/Spring MVC 2023.10.17

[Spring MVC] 1-2. DispatcherServlet: Special Bean Types

1. DispatcherServlet의 위임 구조DispatcherServlet는 WebApplicationContext의 대리 구성요소들에 작업을 위임하여 요청을 처리합니다.대리 구성요소는 Spring IoC Container에 Bean으로 등록되어 적절하게 사용됩니다. (커스터마이징 가능) 2. 처리 흐름  단계설명관련 구성요소 (전략)1. 요청 수신클라이언트의 HTTP 요청이 DispatcherServlet에 도착-2. Handler 찾기요청 URL에 맞는 컨트롤러(핸들러)를 찾음HandlerMapping(RequestMappingHandlerMapping)3. HandlerAdapter 선택찾은 Handler를 실행할 수 있는 Adapter를 선택HandlerAdapter(RequestMappin..

Spring/Spring MVC 2023.10.16

[Spring MVC] 1-1. DispatcherServlet: Context Hierarchy

1. Front Controller한 곳에서 요청을 받아서 적절한 컴포넌트에 라우팅하는 설계 패턴입니다.Spring MVC는 프론트 컨트롤러 패턴으로 설계되었습니다. DispatcherServletSpring MVC에서 프론트 컨트롤러 역할을 담당합니다. Java/XML 방식으로 설정 할 수 있습니다. 예제) XML더보기1. web.xml (webapp/WEB-INF/web.xml) org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB-INF/app-context.xml app org.springframework.we..

Spring/Spring MVC 2023.10.16