Spring Framework/Web on Servlet Stack(72)
-
View Resolution
Spring MVC에서 뷰(View)란 사용자가 요청한 데이터를 렌더링하여 응답하는 역할을 합니다.Spring MVC는 특정 뷰 기술(JSP, Thymeleaf, FreeMarker 등)에 종속되지 않고,ViewResolver를 사용하여 논리적인 뷰 이름을 실제 뷰로 변환하는 방식을 채택하고 있습니다.1. ViewResolver와 View 개념Spring MVC는 View와 View Resolution을 분리하여,컨트롤러가 특정 뷰 기술(JSP, FreeMarker 등)에 종속되지 않도록 설계되었습니다.📌 ViewResolver 역할컨트롤러가 반환한 논리적인 뷰 이름(view name)을 실제 뷰 객체로 변환예를 들어, "home"이라는 뷰 이름이 "WEB-INF/views/home.jsp"로 매핑될 ..
2025.02.28 -
Exceptions
Spring MVC에서 예외(Exception)가 발생하면 DispatcherServlet은 여러 단계의 예외 처리 메커니즘을 통해 적절한 응답을 생성합니다.이를 위해 HandlerExceptionResolver 인터페이스를 구현한 다양한 예외 처리 전략이 존재합니다.1. Spring MVC에서 예외가 발생하는 시점예외는 다음과 같은 경우에 발생할 수 있습니다.1️⃣ 요청 매핑(Request Mapping) 과정에서 예외 발생존재하지 않는 URL을 호출한 경우 (NoHandlerFoundException)요청이 유효하지 않은 경우 (HttpRequestMethodNotSupportedException)2️⃣ 컨트롤러(Controller) 내부에서 예외 발생@RequestMapping이 있는 메서드에서 예..
2025.02.28 -
Interception
Spring MVC에서 인터셉터(Interceptor)는 Http request가 컨트롤러(Endpoint Handler)에 도달하기 전/후, 또는 request가 완전히 완료(View 리졸버에 의해 view가 만들어진 후)된 후에 특정 로직을 실행하는 기능입니다.이를 활용하면 Http request 전/후에 공통적으로 적용해야 하는 기능(예: 로깅, 인증, 권한 검사, 성능 모니터링 등)을 손쉽게 구현할 수 있습니다.1. Spring MVC의 인터셉터(HandlerInterceptor) 개념Spring MVC의 모든 HandlerMapping 구현체는 인터셉터(Interceptor)를 지원합니다.※ Spring MVC에서 Http request을 핸들러에 매핑하는 어떤 방법(HandlerMapping ..
2025.02.28 -
Path Matching
🛠️ Spring MVC Path Matching 전략Spring MVC는 Http request을 적절한 핸들러(컨트롤러)로 라우팅하기 위해 Path Matching(Path 일치여부)을 수행합니다.그러나, path 매칭 과정에서 Servlet API의 path 처리 방식과 URL 디코딩 문제 등으로 인해 다양한 복잡성이 발생할 수 있습니다.이를 해결하기 위해 Spring MVC는 여러 가지 전략을 제공합니다. 1. Servlet API가 제공하는 경로 정보 및 lookupPathServlet API는 request path를 여러 부분으로 나누어 제공합니다.경로 유형설명예제 (/myapp/api/users/123)requestURI전체 요청 경로/myapp/api/users/123contextPat..
2025.02.27 -
Processing
DispatcherServlet의 Http request 처리 과정 (Processing in DispatcherServlet)Spring MVC의 DispatcherServlet은 HTTP request을 받아 적절한 컨트롤러와 뷰를 연결하여 응답을 리턴합니다.요청을 처리하는 과정에서 여러 가지 핵심적인 단계가 존재하며, 이를 이해하면 Spring MVC의 동작을 깊이 있게 이해할 수 있습니다.1. DispatcherServlet의 요청 처리 흐름DispatcherServlet이 요청을 처리하는 과정은 다음과 같이 진행됩니다. ✅ 1. WebApplicationContext를 HttpServletRequest에 바인딩1. WebApplicationContext란 무엇인가요?WebApplicationCo..
2025.02.27 -
Servlet Config
Spring MVC를 서블릿(Servlet) 환경에서 구성하는 방법은 크게 두 가지입니다.1️⃣ web.xml을 이용한 XML 기반 구성2️⃣ Java 코드로 서블릿 컨테이너를 직접 구성하는 방법Spring에서는 web.xml 없이도 프로그램적으로 서블릿을 구성할 수 있는 기능을 제공합니다. 1. WebApplicationInitializer를 이용한 서블릿 구성WebApplicationInitializer는 Spring MVC에서 제공하는 인터페이스로, 서블릿 3.x 이상을 지원하는 컨테이너에서 자동으로 감지되고 실행됩니다.✅ 예제: DispatcherServlet 등록import org.springframework.web.WebApplicationInitializer;import javax.servl..
2025.02.27