[Spring] Servlet 먼저 정리하고 스프링으로 넘어가기

Jae_0·2023년 4월 25일
0
post-thumbnail

Servlet 먼저 정리하고 스프링으로 넘어가기


스프링, 스프링부트 이해를 더 잘하기 위해 서블릿에 대해 정리한 글이다.
잘못된 개념이 있을수도 있다.

용어

  • Servlet : client 요청에 대한 결과를 response 해주는 역할을 하는 자바 프로그램이다.
  • Tomcat : 웹 애플리케이션 서버(WAS)중 하나로 Servlet Container라고도 표현 한다.
  • web.xml : 웹 애플리케이션 실행에 관해 정의하는 환경설정 파일이며, 웹 애플리케이션 서비스 시작 시 웹서버가 읽어서 사용하는 파일이다.

Servlet

Servlet은 서블릿 프로그램을 개발할때 반드시 구현해야 하는 메소드를 선언하고 있는 인터페이스이다. init(), service(), destroy(), getServletConfig(), gerServletInfo() 등 5개의 메소드를 선언하고 있으며, 이는 서블릿 프로그램 실행의 생명주기와 연관되어있다.

  • HttpServlet 클래스를 상속해야 한다.
  • HTTP Server + Servlet Container가 웹 서버 역할에 필요한 대부분을 구현해두었고, 개발자는 Servlet을 만들어 HTTP 요청을 받아 처리하는 부분을 구현한다.
  • doGet(), doPost()등 Request와 Response 동작이 가능하다.

DispatcherServlet

  • Servlet Container로 부터 들어오는 요청을 먼저 받고 처리하는 Controller이다. (Spring MVC에서 요청을 받는 부분이라고 할 수 있다. FrontController)
  • 클라이언트로부터 요청 온 메시지를 분석하여 알맞은 PageController에게 전달하고 응답을 받아 요청에 따른 응답을 어떻게 할지 결정만 한다. (실질적인 작업은 PageController에서 이뤄지기 때문) 이러한 클래스들을 HandlerMapping, ViewResolver 클래스라고 한다.
  • DispatcherServlet은 servlet-context.xml(spring-mvc.xml)을 로딩한다.

Servlet Filter

  • Client로 부터 Server로 요청이 들어오기 전 서블릿을 거쳐 필터링 하는 것을 의미한다.
  • Interceptor를 사용할 수 있겠지만 실행시점에 차이가 있다.(handler 전, 후)
  • Filter는 서블릿 컨테이너, Interceptor는 스프링 컨테이너에 등록한다.

Application Context

  • Root Context이며 스프링에 의해 생성되는 Bean에 대한 Spring IoC Container이다.
  • 여러 Servlet에서 공통으로 사용할 Bean을 등록하는 Context이다.
  • 스프링 IoC 컨테이너는 각 빈에 대한 정보를 담은 설정 메타정보를 읽어들인 뒤에, 이를 참고해서 빈 오브젝트를 생성하고 프로퍼티나 생성자를 통해 의존 오브젝트를 주입해주는 DI 작업을 수행
  • 이 작업을 통해 만들어지고, DI로 연결되는 오브젝트들이 모여서 하나의 애플리케이션을 구성하고 동작하게 되는게 IoC 컨테이너이다. 아래는 위와 관련된 방식에 대한 그림이다.

    (토비의 스프링)

참고
https://12bme.tistory.com/555
https://jeong-pro.tistory.com/222

profile
기록하며 꾸준히 성장하는 코딩 공부

0개의 댓글