본문 바로가기

spring

[Spring] lifeCycle

브라우저로부터 요청을 받고 응답하기까지 spring mvc의 처리흐름

 

1. 먼저 브라우저로부터 요청이 들어오면 일단 Filter를 거치게 된다. Filter에서 하는 대표적인 처리는 Encoding이 있다.

<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encodingFilter</param-name>
			<param-value>/*</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

2. dispatcherServlet이 Controller에 요청을 전달하기 전에 가로챈다. 요청을 가로챈 후 HandlerMapping을 통해 요청에 해당하는 적절한 controller를 찾게 된다. 그리고 DispatcheServlet에 그것을 전달한다.

 

3. DispatcherServlet은 실행할 controller 정보를 HandlerAdapter에 전달한다.

 

4. HandlerAdapter는 해당 controller를 호출하게 된다.

 

5. Controller에서는 전달된 요청을 처리한다. 예를 들어 게시판의 글 목록을 가져오는 요청을 받으면 controller는 게시판 service를 호출하고 service에서는 dao를 통해 게시판 글 목록을 가져오게 된다.

 

요청을 처리한 후 그 결과를 Model에 담고, view의 이름을 HandlerAdapter에게 전달한다.

 

6. 전달받은 view의 이름을 가지고 ViewResolver에서 매핑된 view를 찾아 반환한다.

 

7. dispatcherServlet은 반환된 view를 넘긴다.

 

출처

all-record.tistory.com/164

'spring' 카테고리의 다른 글

Class OncePerRequestFilter  (0) 2020.10.19
Class RequestContextFilter  (0) 2020.10.19
request와 response  (0) 2020.10.05
root-context.xml  (0) 2020.10.04
웹 어플리케이션 보안  (0) 2020.10.04