Spring MVC의 흐름도

그림에는 잘려있는데, Controller 뒤쪽으로 DAO나 서비스 클래스가 있다고 생각하면 된다.

클라이언트가 요청하면 가장 먼저 web.xml을 읽게 된다. 이름과 위치가 지정되어 있다.
web.xml -> 아파치 톰캣이 구동될 때 가장 먼저 읽는 문서. 파일을 찾는 순서가 들어 있다.
이 문서를 따라 Dispatcher Servlet를 찾아가게 된다.

서블릿 매핑의 기본값이 ' / '로 되어 있는데, 모든 요청을 받겠다는 뜻이다.
' / ' 를 ' *.do ' 로 변경하면, ~~.do 로 요청하는 모든 요청을 받는다.
어노테이션과 같은 역할을 한다.
내부에서 흐름을 제어한다.
이후 Controller 클래스로 이동하는데, 스프링 프로젝트 생성시 샘플로 HomeController.java 가 생성되어 있다.

일전에는 DisipatcherServlet에서 HandlerMapping 단계로 이동하여 어느 컨트롤러를 사용할 것인지 요청했지만,
최근에는 HomeController 내부에 @RequestMapping이 설정되어 있어 이 쪽을 통하여 요청을 받는다.
현재는 value 값이 " / " 로 되어 있기 때문에 모든 요청을 다 받는다.
내용을 보면 date 객체를 생성, 자료형을 long 으로 설정한다.
model은 메소드에 매개변수로 정의하면 자동으로 객체가 생성되는데,
이것으로 뷰 페이지 home.jsp 에 공유 설정을 한다.
매개변수는 key-value 형태이다.
뷰 페이지에서는 EL로 serverTime을 출력하고
controller에서는 리턴 값으로 home.jsp 파일을 설정한다.


Controller에서 View로 이동할 때에는 중간에 ViewResolver 과정을 거친다.
뷰 리졸브는 뷰 파일이 저장될 위치를 설정하는데, 그 내용은 servlet-context.xml에 들어있다.


20번 줄은 경로, 21번 줄에는 기본값으로 확장자가 설정되어 있다.
그렇기 때문에 return 값이 "home.jsp"가 아닌 "home" 인 것이다.
Front Controller인 Dispatcher Servlet으로 다시 이동하고,
이후 view는 결과 정보를 사용하여 화면에 내용을 출력한다.
환경설정 파일은 2가지가 있다. root-context.xml, servlet-context.xml
이 두 가지 파일은 자동으로 실행되지는 않지만,
실행하는 내용이 web.xml에 들어있다.
톰캣 서버 구동시 web.xml이 자동 실행되는데, 그 때 연쇄적으로 두 환경설정 파일을 읽어오게 된다.

'스프링' 카테고리의 다른 글
인터셉터 (0) | 2022.10.04 |
---|---|
Model 객체 (2) (0) | 2022.10.04 |
Model 객체 (1) (0) | 2022.10.04 |
DI, Dependency Injection / Constructor DI, Setter DI (0) | 2022.09.29 |
스프링 프레임워크, Spring Framework (0) | 2022.09.29 |