본문 바로가기

우아한테크코스

Tomcat 구현하기 (1) - Servlet

우아한테크코스 레벨 4 첫번째 미션을 진행하면서 정리하는 내용

Servlet

  • Java 기반의 웹 기반의 요청에 대해 동적으로 처리해주는 역할(WAS)
  • 웹 서버가 동적인 페이지를 제공할 수 있도록 도와준다
  • 클라이언트의 요청을 처리하고 그 결과를 반환한다
  • html 을 사용해서 요청에 응답한다
  • Java Thread 를 이용해서 동작한다

Servlet Container

  • 서블릿을 관리해주는 컨테이너
  • 대표적으로 톰캣
  • 서블릿 <-> 웹서버간 통신을 도와준다. (소켓 사용)
  • 서블릿 생명 주기 관리
  • 멀티쓰레드 지원

톰캣 동작 방식

1. 톰캣의 Connector 중 하나를 통해 request 를 전달받음

2. 요청을 받으면 HttpServletRequest 와 HttpServletResponse 객체를 생성한다

3. Engine 에서 적절한 서블릿에 매핑함

4. 서블릿에 매핑되면, 톰캣은 서블릿 인스턴스 체크 후 존재하지 않는다면 서블릿 인스턴스 생성

5. init() 메서드로 서블릿 초기화

6. 서블릿의 service() 를 호출. 호출 방식에 따라 doGet(), doPost() 의 메소드를 호출한다

7. 동적 페이지 생성 후 HttpServletResponse 로 결과를 전달한다

8. 응답이 완료되고, Request 와 Response 객체가 소멸된다

 

Dispatcher Servlet 

  • HTTP 프로토콜로 오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 Front Controller
  • 톰캣과 같은 서블릿 컨테이너가 요청을 받게 될때 모든 요청을 제일 먼저 받음
  • 공통적인 작업을 처리한 후에 해당 요청을 처리해야 하는 컨트롤러를 찾아 작업을 위임
  • MVC 구조에서 사용
  • 과거에는 모든 서블릿을 URL 매핑을 위해 web.xml 에 모두 등록해둬야 했지만 dispatcher servlet 이 모든 요청을 먼저 처리해주므로 컨트롤러만 구현해두면 dispatcher servlet 이 알아서 적합한 컨트롤러를 위임해주는 구조가 되었다

 

 

 

참고
https://mangkyu.tistory.com/14

 

[JSP] 서블릿(Servlet)이란?

1. Servlet(서블릿) 서블릿을 한 줄로 정의하자면 아래와 같습니다. 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 간단히 말해서,

mangkyu.tistory.com

https://velog.io/@jihoson94/Servlet-Container-%EC%A0%95%EB%A6%AC