시작하기에 앞서 기본 웹 동작 구조와 CGI에 대한 이해도가 필요한 것 같다.
Reference의 <servlet에서 Spring Web MVC 프레임워크까지의 변화 과정> 참고!
처음 웹서버는 클라이언트 요청에 대해 정적으로만 응답가능
웹 서버에 프로그램을 붙여 동적인 페이지 생성
-> 서블릿도 동적인 페이지를 만들기 위해 웹서버에 붙이는 프로그램 중 하나
Servlet은 동적 데이터 제공을 위해 CGI를 기반으로 제작된 프로그램
CGI를 사용하면서 프로세스
를 통해 처리하던 것을 스레드
를 통해 처리하여 서버에서 많은 리소스를 소모하는 문제를 해결
사용했을 때의 장점
동작 방식
public class MyServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init();
}
public void destory() {
super.destory();
}
protected void service(HttpServletRequest request, HttpServletResponse response) {
super.service(request, response);
}
}
서블릿을 하나씩 연결할 수도 있지만 그러기엔 번거롭고 복잡
-> 이러한 과정을 바탕으로 만들어진 프레임워크가 바로 우리가 흔히 사용하는 Spring Web MVC 이다.
Spring MVC Framework는 MVC 패턴을 따르면서 Spring 만의 독자적인 Class를 통해 처리
Spring Web MVC에서는 Front Controller의 역할을 Dispatch Servlet
이 담당
DispatcherServlet
은 Servlet WebApplicationContext
를 만든다. 이것은 Root WebApplicationContext
를 부모로 가지고 있음
Handler Mapping, Handler Adapter, View부분들은 Dispatcher Servlet
이 스프링 컨테이너로부터 주입을 받아서 사용하고 동작
(컨트롤러나 핸들러를 호출하기 전에 Handler Adapter라는 기능을 통해 다양한 핸들러를 호출할 수 있는 기능을 추가하여 응용하기 쉬운 형태로 변경됨)
스프링으로 웹 요청을 처리한다 ->
스프링 mvc에서 제공하는 디스패처서블릿과 웹 요청 처리 관련 구현체들을 사용할 수 있다,
스프링 컨테이너, 즉 스프링 Ioc를 사용해서 개발 할 수 있다는 이야기이다!
dispatcher Servlet
이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주어 작업의 효율 높임servlet에서 Spring Web MVC 프레임워크까지의 변화 과정 - https://velog.io/@hellojihyoung
servlet이란? - https://velog.io/@falling_star3
serlvet, dispatcherServlet - https://riimy.tistory.com/87
[테코톡] 코키의 Servlet - https://www.youtube.com/watch?v=calGCwG_B4Y
코기의 servlet를 정리한 블로그 - https://jj-yi.tistory.com/36
Spring Web MVC 프레임워크와 MVC 패턴 - https://aridom.tistory.com/61