zenn.skin 무료버전 배포중!
자세히보기

2024/10/07 4

Web/Spring
[Spring Web 6.1] DispatcherServlet 뜯어보기 - SSR 렌더링 과정

DispatcherServlet은 SpringMVC의 메인이라고 할 수 있을만큼 여러 기능을 수행한다. 그림에서 볼 수 있듯이 여러 컴포넌트들의 사이에서 중개자 역할을 하며 요청을 HandlerAdapter에 넘겨 처리하고, 처리한 결과를 응답에 맞게끔 후처리해주는 역할을 한다. 코드를 뜯어보면서 DispatcherServlet의 각 메서드가 어떤 역할을 하는지 살펴봤는데, 이번에는 정리하는 겸 각 역할을 하는 메서드를 살펴보며 마무리해보려 한다. HandlerMapping 조회// DispatcherServlet@Nullableprotected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { if (th..

Web/Spring
[Spring Web 6.1] DispatcherServlet 뜯어보기 - Multipart & ExceptionHandling

MultipartcheckMultipartHTTP 요청이 멀티파트 요청인지 확인하고, 멀티파트 요청인 경우 이를 적절하게 처리하는 역할을 한다.멀티파트 요청은 파일 업로드와 관련된 요청을 처리할 때 사용된다.protected HttpServletRequest checkMultipart(HttpServletRequest request) throws MultipartException { if (this.multipartResolver != null && this.multipartResolver.isMultipart(request)) { if (WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class) != null) { ..

Web/Spring
[Spring Web 6.1] DispatcherServlet 뜯어보기 - view 관련

doDispatch, doService 코드를 보고 나머지 코드들을 보려니까 마음이 편하다.render메서드와 resolveViewName, applyDefaultViewName 메서드는 모두 view와 관련한 코드들로 handler로부터 받은 값을 처리해주는 역할을 한다.Renderrender 메서드의 동작은 다음과 같다.1. Locale 설정2. View 객체 가져오기3. ModelAndView의 View 객체 사용4. 응답 상태 설정 및 렌더링protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception { // ModelAndView 객체에서 local..

Web/Spring
[Spring Web 6.1] DispatcherServlet 뜯어보기 - dispatch

드디어 dispatcherServlet의 주요 기능인 dispatch 부분에 대해 공부해보려 한다. 아직 render나 viewResolver, multipart 같은 부분이 남아있는데, 먼저 dispatch 부분을 살펴보고 나머지 코드도 살펴보려 한다. doServiceprotected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception { /** * 1. 요청 로그를 남기는 메서드 호출 */ this.logRequest(request); /** * 요청 속성을 백업 - jsp 관련 코드 */ Map attributesSnapshot = ..