영상 후기 - Servlet vs Spring

‍bng4535·2023년 3월 16일
0

movie

Servlet

  • 웹 서버 안에서 웹 페이지를 동적으로 처리하는 프로그램

Servlet Container와 Servlet

  • Servlet Container : 서블릿을 담고 관리하는 역할(생명 주기 관리)

  • HttpServetRequest, HttpServletResponse 객체 생성
  • 사용자 요청이 들어오면 서블릿 컨테이너가 설정 파일을 읽어서 매핑할 Servlet 확인
    web.xml
  • 서블릿 인스턴스가 컨테이너에 존재하지 않으면 생성(Init())
  • 서블릿 컨테이너에 스레드를 생성하고 res, req를 인자로 service 실행
  • 응답 처리 후 res, req 소멸(서블릿은 싱글톤으로 관리하여 남아 있음)
  • 문제점

    • 요청 당 서블릿을 정해주므로 비효율적
    • 멀티 스레딩을 다루어야 하고 핸들러의 공통 로직이 중복된다.

Dispatcher Servlet

  • 프론트 컨트롤러 패턴

    • 요청을 앞단에서 처리할 수 있는 일을 전담하는 요소를 둔다. ex)스프링
    • 이때 전면에서 모든 요청을 Dispatcher Servlet이 받음
  • Dispatcher Servlet 처리 과정

    • 요청을 Dispatcher가 받고 핸들러매핑을 통해 컨트롤러를 찾고, 핸들러 어댑터는 해당 컨트롤러의 메서드를 호출하여 로직 수행
    • 그 결과를 Model And View 객체로 변환해서 디스패처서블릿에 넘김
    • 디스패처 서블릿은 이를 뷰리졸버를 이용하여 view를 찾거나 생성
    • 이 view에 모델로 들어온 data를 넣어 응답
  • 이로써 개발자들은 컨트롤러와 핸들러 부분(로직)에만 집중

  • Controller, ViewResolver, HandlerMapping, HandlerAdapter 등은 스프링 컨테이너에 빈 객체로 등록되어 있다. DispatcherServlet이 설정 파일을 읽어 RootWebApplicationContext를 상속한 ServerWebApplicationContext를 생성하고 그 안에 빈으로 등록

profile
공부 기록

0개의 댓글