SpringMVC - 05. Spring MVC 01
Spring MVC
전체 구조
직접 만든 프레임워크 | SpringMVC |
---|---|
FrontController | DispatcherServlet |
handlerMappingMap | HandlerMapping (인터페이스) |
MyHandlerAdapter | HandlerAdapter (인터페이스) |
ModelView | ModelAndView |
viewResolver (메소드) | ViewResolver (인터페이스) |
MyView | View (인터페이스) |
DispatcherServlet
- SpringMVC에서 프론트 컨트롤러 역할
- 핵심 기능
- HttpServlet을 상속 (서블릿이 호출되면 service() 메소드가 호출됨)
- 스프링 부트에선 서블릿으로 자동 등록함 (모든 경로에 대하여 매핑해줌)
HandlerMapping
- 사용하고자 하는 핸들러(Controller)를 찾아줌
- 스프링 빈의 이름으로 핸드러를 찾을 수 있음
- 스프링 부트가 자동 등록하는 주요 HandlerMapping
- RequestMappingHandlerMapping : Annotation 기반의 컨트롤러인 @RequestMapping에서 사용
- BeanNameUrlHandlerMapping : ‘스프링 빈의 이름 == URL’로 핸들러를 찾음
HandlerAdapter
- HandlerMapping을 통해서 찾은 핸들러를 실행할 수 있게 해줌
- 스프링 부트가 자동 등록하는 주요 HandlerAdapter
- RequestMappingHandlerAdapter : Annotation 기반의 컨트롤러인 @RequestMapping에서 사용
- HttpRequestHandlerAdapter : HttpRequestHandler 처리
- SimpleControllerHandlerAdapter : Controller 인터페이스(이전에 쓰던거) 처리
<div class='notice--warning'>
<br/>
<h2>
인프런 - 김영한님의 <strong>Spring MVC 강의</strong>를 정리한 내용입니다. <br/>
</h2><br/>
<a href="https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard" class="btn btn--info">김영한님 인프런 강의</a><br/>
<br/>
</div>
-
HandlerMapping이 Handler(Controller) 찾음
-
찾은 Handler에 알맞은 Adapter가 있나 확인
(HandlerAdapter의 supports())
-
있으면 찾은 Adapter를 실행하고 Handler정보도 함께 반환
-
찾은 Adapter가 내부적으로 Handler를 실행 하고 결과 반환
(override한 handleRequest 메소드 호출)
ViewResolver
-
논리적으로 반환된 뷰 네임을 가지고 뷰 오브젝트를 찾고 생성하는 작업을 대신해줌
- (컨트롤러가 뷰의 논리적인 이름만 반환하는 역할을 담당)
-
스프링 부트가 자동 등록하는 주요 ViewResolver
-
BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환
-
InternalResourceViewResolver : JSP를 처리할 수 있는 뷰 반환 (내부 자원 찾을 떄)
-
InternalResourceView 반환
-
JSP처럼 forward()를 호출해서 처리할 수 있는 경우 사용
-
application.properties에 등록한 설정 정보를 사용
-
-
댓글남기기