차근차근 개념을 다시 정리하기 위해서 이번 포스팅을 작성한다.
위 그림은 스프링의 동작 과정을 나타낸 것이다.
내 나름대로의 정리 사항은 아래와 같다.
1. 웹을 켠다
2. 브라우저==> 클라이언트
3. 클라이언트가 url을 매칭시켜서 View로 정보를 요청한다
4. view에서 해당 요청을 수행하려고 한다
5. 그러면 Dispatcher-servlet이 HandlerMapping을 동작시킴
6. 해당 url이 매핑된 Controller를 검색
7. 주입된 @Bean객체를 가지고 handlerMapping에 매핑되어 있는 Controller를 호출한다. (@Controller)
8. @RequestMapping("url") 그 Controller안에 요청(ex: url + .do )과 일치하는 url 메소드를 찾아서 Service -> DAO -> DB 순서로 클라이언트에서 받은 어떠한 데이터들을 가지고 이동해서 조건에 맞는 쿼리를 DB에서 수행한다.
9. 그 후 해당하는 자료를 다시 역순으로
DB -> DAO -> Service 순으로 Dto에 받아와서 Controller에 데이터를 반환해준다.
10. 이제 반환값으로 Controller에서 출력할 viewName을 반환한다.
11. 처리된 데이터를 ViewResolver에서 prefix경로의 viewName.suffix 형식이 있는지 확인한다.
12. 해당하는 View가 있으면 View에 가지고있는 데이터를 전달한다.
13. view는 받은 데이터를 다시 Dispatcher-Servlet에 전달해준다.
14. Dispatcher-Servlet은 받은 데이터를 클라이언트로 전달한다.
15. 최종 결과를 클라이언트에서 출력
이것을 정리하다 보니 예전에 이해되지 않고 그냥 작성만 했던 코드를 명확하게 이해하게 되는 것 같다.
DispatcherServlet
이 생기게 되면서 web.xml의 부담을 덜어주었다.
기존의 방식은 모든 서블릿에 대해 URL 매핑을 활용하기 위해서는 web.xml에 모두 등록해줘야 했지만 DispatcherServlet
이 해당 Application으로 들어오는 모든 요청을 핸들링 해주면서 작업을 편리하게 할 수 있게 해주었다.