[영상후기] [10분 테코톡] 🌻타미의 Servlet vs Spring

박철현·2023년 3월 19일
0

영상후기

목록 보기
45/160

movie

  • Servlet : 웹 애플리케이션을 만들 때 필요한 인터페이스

  • Spring Web MVC

    • Spring : Spring Framework에 있는 모듈
    • Web Service
    • MVC 패턴 사용
    • 서블릿을 사용하는 스프링 웹 MVC
  • 서블릿은 왜 만들어졌을까?

    • 초창기 웹서버 : 사용자 요청에따라 다른 처리를 해줄 수 없다
      • 동적 처리를 해줄 수 없음
      • 사용자(요청)에 따라 다른 처리를 해줄 수 없다.
    • CGI(Common Gateway Interface) : 동적 데이터 처리하는 인터페이스 등장
      (웹서버 - Apache) <-> (CGI 구현체 - C, PHP 등)
    • 웹 서버와 프로그램 사이 규약(CGI)
  • CGI 문제점

    • 많은 사용자를 처리하기엔 무리

      • Request 만들때마다 프로세스를 만듦
      • 쓰레드로 바꿔서 해결
    • 같은 구현체를 사용 하더라도 Request가 다르다면 구현체를 하나씩 사용

      - 싱글톤 패턴으로 변경한 것이 **서블릿**


    • 요청이 들어올 때마다 스레드 생성

    • CGI 구현체를 싱글톤 패턴으로 변경


  • Web Server : 정적 데이터 처리

  • Web Application Server : 동적 데이터 처리

  • 웹 컨테이너 : 요청이 들어오면 쓰레드를 생성하고 서블릿을 실행시킨다.
    서블릿 인터페이스에따라 서블릿을 관리한다.

    • 서블릿 메소드 호출 역할을 해줌

    • 서블릿은 인터페이스 => 구현한 것이 HTTP Servlet

    • 서블릿 생명주기(init / service /destroy)

      • init : 서블릿 인스턴스 생성
        -> init() 호출
      • Service : 실제 기능 수행
        • HTTP 메서드에 따라 HTTP 서블릿 안에 doGet, doPost, doPut, doDelete 메서드 호출
        • doXXX() : 개발자가 구현
        • 서블릿 활용 - HTTP서블릿 구현 : 웹 컨테이너가 HTTP 메소드에 맞는 서블릿 메소드 호출 -> 그 안에 내용은 개발자들이 구현
      • Destroy : 서블릿 인스턴스가 사라진다.
        • 컨테이너가 종료되는 시점에 destroy()호출
        • 사라질 때 destroy() 호출
  • Request가 쓰레드별 1개를 가리킴

    • 서블릿 찾을때 구현체가 없으면 init으로 만듦 -> 기능 수행 -> 컨테이너가 종료될 때 destroy 호출하여 서블릿 인스턴스를 없애줌
    • 각 메서드는 Servlet Container(Tomcat)이 호출해준다.
  • Spring Web MVC에서는 Servlet을 어떻게 사용? Dispatcher Servlet

    • 1) 모든 Request가 오면 디스패처 서블릿으로 간다.
    • 2) 요청에 따라 적절한 컨트롤러를 찾는다.
      • 컨트롤러 < 핸들러 상위 개념
      • handler Mapping을 통해 요청에 맞는 컨트롤러 찾기
        • 방법은 스프링 프레임워크에서 제공
        • 어떤 방식의 핸들러 맵핑을 사용할지 설정파일에 지정한다.
          • BeanNameHandlerMapping(Bean 이름과 Url을 맵핑 - default라 지정 x)
          • Annotation으로 Url과 Mapping하는 방식(@RequestMapping)
    • 3) 핸들러 맵핑에서 찾은 핸들러(컨트롤러)의 메서드 호출
      • ModelAndView 형태로 바꿔준다.
      • Model은 컨트롤러가 처리한 결과
      • View는 그 결과를 담는 페이지
        • 컨트롤러가 뷰를 스트링 타입으로 줌
    • 4) View Resolver가 실제 이름으로 객체를 생성(찾아줌)
    • 5) Dispatcher Servlet : View에 모델(data)를 포함시킨다
    • 6) 클라이언트 전송

  • Spring Web MVC 없을 때 :

    • Url 마다 서블릿 생성, Web.xml로 Servlet 관리
    • 서블릿에서 뷰로 보내주는 것 까지 했어야 함
  • Spring Web MVC :

    • 서블릿은 Dispatcher Servlet 1개로 가능
    • 뷰 분리
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보