본문 바로가기

Backend/Spring

7. STS / MVC 처리 순서

Spring MVC 처리 순서

1. 클라이언트(Client) 서버에 어떤 요청(Request) 한다면 스프링에서 제공하는 DispatcherServlet 이라는 클래스(일종의 front controller) 요청을 가로챈다.

(web.xml 살펴보면 모든 url ( / ) 서블릿 매핑을하여 모든 요청을 DispatcherServlet 가로채게 해둠(변경 가능))

2. 요청을 가로챈 DispatcherServlet HandlerMapping(URL 분석등..)에게 어떤 컨트롤러에게 요청을 위임하면 좋을지 물어본다. (servlet-context.xml에서 @Controller 등록한 것들을 스캔해서 찾아준다.)

3. 요청에 매핑된 컨트롤러가 있다면 @RequestMapping 통하여 요청을 처리할 메서드에 도달한다.

4. 컨트롤러에서는 해당 요청을 처리할 Service 주입(DI)받아 비즈니스로직을 Service에게 위임한다.

5. Service에서는 요청에 필요한 작업 대부분(코딩) 담당하며 데이터베이스에 접근이 필요하면 DAO 주입받아 DB처리는 DAO에게 위임한다.

6. DAO mybatis(또는 hibernate) 설정을 이용해서 SQL 쿼리를 날려 DB 정보를 받아 서비스에게 다시 돌려준다.

( 보통 VO(dto) 컨트롤러에서 부터 내려받아 쿼리의 결과를 VO 담는다. (mybatis resultType) 

7. 모든 로직을 끝낸 서비스가 결과를 컨트롤러에게 넘긴다.

8. 결과를 받은 컨트롤러는 Model객체에 결과물 어떤 view(jsp)파일을 보여줄 것인지등의 정보를 담아 DispatcherServlet에게 보낸다.

9. DispatcherServlet ViewResolver에게 받은 뷰의 대한 정보를 넘긴다.

10. ViewResolver 해당 JSP 찾아서(응답할 View 찾음) DispatcherServlet에게 알려준다.

(servlet-context.xml에서 suffix, prefix 통해 /WEB-INF/views/index.jsp 이렇게 만들어주는 것도 ViewResolver)

11. DispatcherServlet 응답할 View에게 Render 지시하고 View 응답 로직을 처리한다.

12. 결과적으로 DispatcherServlet 클라이언트에게 렌더링된 View 응답한다.

 

출처: jeong-pro.tistory.com/96?category=793347

 

Spring MVC 구조의 처리 과정을 설명해보시오. (MVC process)

MVC 패턴의 처리 과정을 설명해주실수 있나요? [Spring MVC 일반적인 구조] [Spring MVC 구조] <출처 : http://javasampleapproach.com/spring-framework/spring-mvc-rest-difference-between-controller-and-r..

jeong-pro.tistory.com