[Spring] Servlet

BBANG-JUN·2020년 8월 26일
0

🍃Spring

목록 보기
4/26
post-thumbnail

Servelt

참고 : https://12bme.tistory.com/555

1. 서블릿 동작 과정


1. 사용자가 URL을 클릭시, HTTP Req를 Servlet Container에 보낸다.
2. Servlet Container는 HTTP Reqest, HTTP Response를 생성한다.
3. 사용자가 요청한 URL을 분석하여 어느 서블릿에 대한 요청인지 찾는다.
4. Container는 서블릿 service() 메소드를 호출하며, GET/POST 여부에 따라 doGet(), doPost()가 호출된다.
5. doGet(), doPost() 메소드는 동적인 페이지를 생성한 후, HTTP Response 객체에 응답을 보낸다.
6. 응답이 완료되면 HTTP Reqest, HTTP Response 두 객체를 소멸시킨다.

2. 서블릿 생명주기

  • init() - 서버가 켜질 때 한 번만 실행
  • service - 모든 유저들의 요청들을 받음
  • destroy() - 서버가 꺼질 때 한 번만 실행

3. 스프링 컨테이너(Spring Container)

Spring Container는 Bean들의 생명주기를 관리한다.

종류에는 BeanFactory와 이를 상속한 ApplicationContext가 존재한다.

이 두개의 컨테이너로 의존성 주입된 Bean들을 제어하고 관리할 수 있다.

3-1. 스프링 웹 어플리케이션 동작 원리


1. 서버가 켜지면 Web.xml가 로딩
2. Web.xml에서 ContextLoaderListener은 ApllicationContext를 생성
3. ApllicationContext는 등록되어 있는 설정에 따라 첫 번째 Spring Container를 구동
4. 이때, Spring Container는 개발자가 작성한 비즈니스 로직 부분과 DAO, VO 객체들이 생성

5. 클라이언트에서 URL 요청
6. 요청될 시, DispatcherServlet가 생성

  • DispatcherServlet

: FrontController의 역할을 수행한다. 클라이언트로부터 요청 온 메세지를 분석하여 알맞는 Pagecontroller에게 전달하고 응답을 받아 요청에 따른 응답을 어떻게 할지 결정만 한다.

  • Pagecontroller

: 실직적인 작업들이 이루어지는 공간이다. 이러한 클래스들을 HandlerMapping,ViewResolver 클래스라고 한다.

  1. DispatcherServlet는 servlet-context.xml을 로딩
  2. 요청되면, 두 번째 Spring Container가 구동되고 응답에 맞는 PageController들이 동작한다.
    이때, 첫 번째 Spring Container가 구동되면서 생성된 DAO, VO, ServiceImpl 클래스들과 협엽하여 알맞는 작업을 처리하게 된다.

3-2. 정리

  • 서블릿 컨테이너는 웹 어플리케이션 서버중에서 HTTP 요청을 받아 처리하는 기초 역할을 맡고있다.
  • 사용자가 웹 프레임워크로 작성한 웹 어플리케이션은 결국 서블릿 컨테이너 위에서 동작한다.
  • 서블릿 컨테이너 종류로는 아파치 톰캣, 제티 등이 널리 이용되고 있다.

4. 서블릿 실행순서

서블릿 실행순서는 개발자가 관리하는게 아닌 서블릿 컨테이너가 관리한다.
즉, 서블릿에 의해 사용자가 정의한 서블릿 객체가 생성되고 호출되고 사라진다.
이렇게 개발자가 아닌 프로그램에 의해 객체들이 관리되는 것을 IoC(Inversion of Control)이라 한다.

4-1. 서블릿 컨테이너의 생명주기 도식화


서블릿 컨테이너는 클라이언트로부터 처음 요청이 들어오면 현재 실행할 서블릿이 최초의 요청인지

판단하고 없으면 해당 서블릿을 새로 생성한다. 이 작업은 최초 1회만 일어난다.

profile
🔥 머릿속으로 생각하지만 말고, 행동으로 보여줘

0개의 댓글