본문 바로가기
Spring

Spring - 서블릿과 디스패쳐서블릿

by devLog by Ronnie's 2022. 9. 4.

웹을 만들기 위해서 필요한 기술중에 하나인 서블릿에 대해서 정리하고, 스프링에서의 서블릿과 디스패쳐 서블릿 각각의 정의를 정리하고 차이점을 정리한다. 

 

서블릿과 디스패쳐서블릿

 

서블릿?


자바를 사용하여 웹을 만들기 위해 필요한 프로그래밍 기술

요청에 대해 동적으로 처리해주는 역할로서 서버 사이드에서 작동함(WAS)

HttpServlet이라는 자바의 클래스를 상속받음

 

서블릿 생명 주기


  1. Servlet 객체 생성 (1회)
  2. init() 호출 (1회)
  3. service(), doGet(), doPost() 호출 (요청 시 매번)
  4. destory() 호출 (1회)

 

 

서블릿 컨테이너?


서블릿은 요청을 받거나 내보낼 때 자신이 알아서 하는 것이 아닌 서블릿을 실행시키는 주체인 서블릿 컨테이너라는 것을 이용

 

서블릿 컨테이너는 어떤 요청에 대해 어떤 서블릿을 실행할 것인지 제어하는 것

 

대표적인 서블릿 컨테이너로는 톰캣이 있음

 

 

서블릿 동작 과정


서블릿-동작-과정
서블릿 동작 과정

  1. 사용자의 요청이 들어간다
  2. 요청을 받은 서블릿 컨테이너는 HttpServletRequest와 HttpServletResponse 객체를 생성한다
  3. 요청을 분석하여 어느 서블릿에 대한 요청인지 찾는다
  4. 해당하는 서블릿에 요청을 전달
  5. Serivce() 호출
  6. 호출 방식에 따라 doGet(), doPost() 메서도 호출
  7. 동적 페이지 생성 후 HttpServletResponse로 결과를 전달
  8. 응답이 완료되고 HttpServletRequest와 HttpServletResponse 객체가 소멸됨

 

 

 

디스패쳐 서블릿


 

클라이언트가 요청 시 서블릿 컨테이너가 요청을 받는데 이때 제일 앞에서 서버로 들어오는 요청을 처리하는 프론트 컨트롤러라는 것을 스프링에서 정의하였고 이를 디스패쳐 서블릿이라고 함

 

기존에는 모든 서블릿에 대해서 URL 매핑을 사용하기 위해 web.xml에 모두 등록해야 했지만 디스패쳐 서블릿이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링 해주면서 작업의 효율을 높임

 

스프링부트에서는 @SpringBootApplication 어노테이션으로 web.xml 파일을 대체 가능

 

컨트롤러로 향하는 모든 웹 요청의 진입점으로써 모든 요청을 처리하고 결과를 클라이언트에게 응답함

 

디스패쳐 서블릿을 이용한다는 것은 스프링에서 제공하는 MVC 모델을 이용한다고 생각하면 됨

 

디스패쳐 서블릿 동작 과정


디스패쳐-서블릿
이미지 출처 : Overview of Spring MVC Architecture

  1. URL 접근하여 정보를 요청
  2. 모든 요청은 스프링의 디스패쳐 서블릿으로 전달됨
  3. 디스패쳐 서블릿은 핸들러 매핑에서 들어온 요청에 대한 매핑 컨트롤러가 있는지 검색함
  4. 해당 매핑 정보는 @PostMapping, @RequestMapping 등과 같은 어노테이션을 보고 정보를 찾는다.
  5. 찾은 정보에 대해서 컨트롤러에 처리 요청을 보냄
  6. 해당 컨트롤러에서 클라이언트의 요청을 처리하고 결과를 출력할 view 이름을 리턴한다.
  7. 컨트롤러에서 보내온 view이름을 토대로 처리 뷰를 검색
  8. 뷰리졸버를 통해 처리결과를 뷰에 송신
  9. 처리결과가 포함된 뷰를 디스패쳐서블릿에 송신
  10. 최종 결과 출력

 

댓글