본문 바로가기

코드로 배우는 스프링 웹 프로젝트

스프링 동작과정 - (3) [Request 왔을 때 실행 동작]

스프링 MVC의 기본 구조는 아래 그림과 같이 표현할 수 있습니다.

1.

사용자의 모든 Request('/'로 들어오는)는 Front-Controller인 web.xml의 DispatcherServlet을 통해 처리한다.

	<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

 

2,3. servlet-context.xml(<annotation-driveen />) 에서 HandlerMapping을 이용해 Request의 처리를 담당하는 컨트롤러를 검색한다.

→(HandlerMapping 인터페이스를 구현한 여러 객체들 중 RequestMappingHandlerMapping 는 개발자가 @RequestMapping 어노테이션을 적용한 것을 기준으로 판단한다.)

적절한 컨트롤러를 찾았다면 HandlerAdapter를 이용해서 해당 컨트롤러를 동작 시킨다.

 

4. Controller는 개발자가 작성하는 클래스로 실제 Request를 처리하는 로직을 작성하게 된다.

이 때 view에 전달해야 하는 데이터는 주로 Model이라는 객체에 담아서 전달한다.

Controller는 다양한 타입의 결과를 반환하는데 이에 대한 처리는 ViewResolver를 이용한다.

 

5. ViewResolver는 Controller가 변환한 결과를 어떤 View를 통해서 처리하는 것이 좋을지 해석하는 역할입니다.

가장 흔하게 사용하는 설정은 servlet-context.xml에 정의된 Inter-nalResourceViewResolver입니다.

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>

 

6,7. View는 실제로 응답 보내야 하는 데이터를 Jsp 등을 이용해서 생성하는 역할을 하게 됩니다. 만들어진 응답은 DispatcherServlet을 통해서 전송됩니다.

 

'코드로 배우는 스프링 웹 프로젝트' 카테고리의 다른 글

MyBatis란?  (0) 2020.03.29
스프링 동작 과정 - (1)  (0) 2020.03.14
스프링이 동작하면 생기는 일  (0) 2020.03.08