스프링 MVC 구조

정민교·2024년 6월 5일
0

springmvc1

목록 보기
6/6

목표

스프링 MVC 구조에 대해서 알아본다

스프링 MVC 구조

  • DispatcherServlet: 프론트 컨트롤러 패턴으로 구현하여, 핸들러를 호출하기 전에 많은 공통 기능들을 처리할 수 있도록 설계되었음.
  • HandlerMapping: 요청으로 들어온 URL을 처리해야 하는 핸들러를 찾는 작업을 진행함
  • HandlerAdapter: 찾은 핸들러가 어떤 핸들러 어댑터를 사용하여 처리할 수 있는지 찾는 작업을 진행함. 요청에 대한 처리는 핸들러 어댑터에서 핸들로를 호출
  • ViewResolver: view name으로 렌더링 해야하는 view path를 찾는 작업을 진행함.
  • View: 찾은 view path에있는 view를 렌더링한다.

DispatcherServlet

DispatcherServlet도 servlet이다.

HandlerMapping

스프링 부트가 자동으로 등록하는 핸들러 매핑과 핸들러 어댑터

HanlderMapping

1순위 - RequestMappingHandlermapping:
어노테이션 기반의 컨트롤러, @RequestMapping 어노테이션이 달린 핸들러를 찾는다.

2순위 - BeanNameUrlHanldlerMapping:
스프링 빈의 이름으로 핸들러를 찾는다.

handlerAdapter

1순위 - RequestMappingHandlerAdapter:
어노테이션 기반의 컨트롤러, @RequestMapping 어노테이션이 달린 핸들러를 처리할 수 있는 어댑터

2순위 - HttpRequestHandlerAdapter:
HttpRequestHandler 인터페이스를 구현한 핸들러를 처리할 수 있는 어댑터

3순위 - SimpleControllerHandlerAdapter:
Controller 인터페이스(어노테이션이 아닌 과거에 사용하던 Controller 인터페이스)를 구현한 핸들러를 처리할 수 있는 어댑터

ViewResolver

1순위 - BeanNameViewResolver:
빈 이름으로 뷰를 찾아서 반환한다.(예: 엑셀 파일 생성 기능에 사용)

2순위 - InternalResourceViewResolver:
JSP를 처리할 수 있는 뷰를 찾아서 반환한다.

InternalResourceViewResolver 는 만약 JSTL 라이브러리가 있으면 InternalResourceView 를 상속받은 JstlView 를 반환한다.
JstlView 는 JSTL 태그 사용시 약간의 부가 기능이 추가된다.

다른 뷰는 실제 뷰를 렌더링하지만, JSP의 경우 forward() 통해서 해당 JSP로 이동(실행)해야 렌더링이 된다.
JSP를 제외한 나머지 뷰 템플릿들은 forward() 과정 없이 바로 렌더링 된다.

Thymeleaf 뷰 템플릿을 사용하면 ThymeleafViewResolver 를 등록해야 한다. 최근에는 라이브러리만 추
가하면 스프링 부트가 이런 작업도 모두 자동화해준다.

profile
백엔드 개발자

0개의 댓글