-
[CS] Dispatcher ServletComputer Science 2022. 3. 8. 23:05
Servlet이 web application에서 작동하려면 web.xml이라는 파일이 필요하다. web.xml은 특정 url과 해당 servlet에 대한 매핑을 가지고 있어서, 어떠한 요청이 들어왔을 때 Servlet Container에서 해당 Servlet을 매핑시키는데 사용되는 파일이다.
매핑된 Servlet에서는 Parameter 정보를 받고, Service 로직을 수행한 뒤, 경우에 따라서 View를 만들어서 Client에게 반환해주는 일련의 과정을 거친다.
Spring Web MVC pattern에서는 Servlet이라는 개념을 Dispatcher Servlet으로 이용하고 있다.
Spring은 Tomcat이라는 Servlet Container을 갖고 있다.
Spring은 모든 request을 우선 Dispatcher Servlet으로 전달한다. Dispatcher Servlet은 해당 request에 맞는 contorller을 찾아주게 되는데, 이를 Handler Mapping이라고 한다. Handler는 Controller을 포함하는 유사한 개념이다.
그 후 찾아낸 Contoller로 request을 보내게 되는데 이 과정을 Handler Adapter가 진행하며, Controller는 해당 로직을 처리한 결과(Model, View)를 다시 Dispatcher Servlet으로 전달해준다.
여기서 실제 static파일 등으로 view를 전달해주는 것이 아니라, view의 접근 위치와 같은 String type으로 view를 반환한다. 그것을 View Resolver가 해당 View를 찾아서 반환해준다.
그러면 Dispatcher Servlet은 View Resolver에게 반환받은 View에 Controller에게 반환받은 Model을 포함해서 최종적으로 반환할 View을 생성하고 이 값을 Client에게 전달한다.
Spring Web MVC에서 Dispatcher Servlet은 위와 같이 크게 네 개의 과정을 통해 동적인 웹 애플리케이션을 자바를 활용하여 MVC 패턴으로 구현할 수 있게 해 준다.
* Dispatcher Servlet의 장점
1. url마다 Servlet을 매핑하지 않아도 된다. 만약에 이전 포스트처럼 모든 Request에 대해 1:1로 Servlet을 생성해주게 되면, 그 과정 자체의 문제라기보다는 그 매핑 정보를 모두 web.xml 파일에 기록해야 한다. 그렇게 되면 설정 파일이 너무 복잡하고 커지는 문제가 발생한다. 물론 그 과정에서 매핑에 필요한 시간이 오래 걸릴 수도 있다. 하지만 Dispatcher Servlet을 사용하게 되면 모든 요청을 Dispatcher Servlet에서 관리하기 때문에 해당 문제에 대한 부담이 현저하게 줄어들게 된다.
2. 이것은 MVC 패턴의 장점과 연관이 있는데 만약에 View를 독립적으로 분리하지 않게 되면 Servlet에서 반환할 View까지 관리를 해주게 된다. 그렇게 되면 너무 복잡해지는 문제가 있지만, Dispatcher Servlet은 View를 강제로 분리하여 해당 로직을 수행하는 과정을 따로 두어 View 생성 과정을 더 용이하게 만들어 주었다.'Computer Science' 카테고리의 다른 글
[CS] Servlet의 개념과 동작 과정 (0) 2022.03.08 [CS] Web server와 Was(web application server) (0) 2022.03.08 [CS] CQS - Command Query Separation (0) 2021.12.30 [CS] REST API란? (0) 2021.11.16 [CS] 객체지향(OOP)의 5원칙 (SOLID) (0) 2021.11.05