출처 : https://docs.spring.io/spring-framework/docs/2.0.x/reference/mvc.html
스프링이 어떠한 방식으로 돌아가는지 차근차근히 설명해 보려한다.
1. 클라이언트에서 요청이 오면 웹 컨테이너에서 web.xml를 거치게 된다. web.xml 안에는 dispatcher servlet 에 가기에 앞서, listener를 통해 스프링에 필요한 설정(context) 들을 읽어들이고, 필요한 객체들을 등록해주는 역할을 한다. 그리고 <context-param>을 통해 어떤 위치에 있는지 설정이 가능하다. (없으면 설정들을 불러오는 것이 불가능하다.). applicationContext.xml 안에는 각종 빈 등록(패키지 안에 존재하는 클래스 및 DB 영역)을 담당하는 곳이라 생각하면 된다.
2. 다음에는 dispatcher servlet 태그에 오는데, front controller라고도 불린다.(그림 참조). dispatcher servlet은 클라이언트의 요청을 받고 해당하는 컨트롤러를 찾아준다. 밑에 그림을 보면 <init-param>을 볼 수 있는데 dispatcher servlet이 동작하기 위해서는 contextConfig을 해줘야 한다.(이 xml안에는 view resolver, controller 등의 빈 등록을 위한 설정이 존재한다.) 그래야 클라이언트의 요청에 따른 컨트롤러를 찾을 수 있기 때문이다. 이 부분이 소위 말하는 HandlerMapping 이라는 부분이다.
3. HandlerMapping을 통해서 컨트롤러에 대한 정보를 얻었다면, 해당 Controller에게 클라이언트 요청을 처리하도록 시킨다. 그러면 컨트롤러에서 데이터를 만들어 dispatcher servlet에 다시 전달한다.
4. 그러한 데이터를 웹 페이지로써 가공을 해야하기에 view Resolver 영역으로 가도록 한다. view resolver 영역은 .jsp와 경로를 가지고 렌더링을 하는 역할을 한다. 데이터를 가지고 렌더링을 하면 해당하는 웹 페이지를 만들어 다시 Dispatcher servlet에 전달을 한다.
5. 마지막으로 만들어진 웹 페이지를 클라이언트에 응답을 하면 사용자는 해당하는 웹 페이지를 볼 수 있게 된다.
'web' 카테고리의 다른 글
공개 키와 개인 키: 암호화의 기초 이해 (0) | 2023.10.31 |
---|---|
HTTP 상태 코드: 웹 통신의 기초 이해하기 (0) | 2023.08.13 |
http vs https (0) | 2018.11.13 |
nginx의 로드밸런싱(Load-Balancing) (0) | 2018.10.10 |
MVC/Vo, Dao, Service (0) | 2018.03.12 |