Spring/MVC

[웹 애플리케이션 이해] 서블릿

JWonK 2022. 7. 3. 16:12
728x90
반응형

서블릿이란?

자바 웹 서버로 웹 페이지를 제공할 때, 동적인 데이터를 제공하는 것을 돕는 기술이다.

 

이를 그림을 통해 보면,

 

클라이언트 측에서 데이터를 POST Method(회원 저장)로 서버에게 전송하였다.

HTTP 프로토콜을 기반으로 데이터를 전송하였기 때문에 HTTP 메시지가 생성되고 서버는 이를 받게 된다.

그럼 서버는 이를 데이터 형식에 맞게 가져온 후 응답 메시지를 생성한 후 다시 클라이언트에게 전송해주어야한다.

 

 

 

 

이를 순차적인 과정으로 확인해보면

서블릿이 존재하지 않을 때 처리 과정

왼쪽 과정을 진행하여 HTTP 메시지에 담긴 정보를 바탕으로 회원을 저장한 후, 응답 메시지를 생성한 후 다시 보낸다.

하지만 의미있는 비지니스 로직은 데이터베이스에 저장 요청을 하는 과정 밖에 존재하지 않고, 나머지는 서버 연결, HTTP 메시지 읽고, 타입 확인하고, 다시 응답 메시지 생성하고, TCP/IP에 전달하는 과정이 존재한다.

 

 

 

 

여기서 서블릿의 중요성이 강조된다.

서블릿을 지원하는 WAS를 사용하게 되면 우리는 의미있는 비지니스 로직인 데이터 베이스에 저장 요청 이 과정에만 집중할 수 있는 것이다.

나머지 기능은 모두 서블릿이 지원한다.

 

 

서블릿을 지원하는 WAS를 사용했을 때 처리 과정


서블릿 특징

  • urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행된다
  • HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest가 존재한다. 이 객체를 이용하여 쉽게 접근 가능하다.
  • HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse가 존재한다. 이 객체를 이용하여 쉽게 생성할 수 있다.
  • 개발자는 HTTP 스펙을 매우 편리하게 사용할 수 있다.

 

 

 

서블릿을 제공하는 WAS 동작과정

 


서블릿

HTTP 요청, 응답 흐름

  • HTTP 요청시
    • WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출
    • 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내 사용
    • 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력
    • WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성

 

 

서블릿 컨테이너

  • 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함
  • 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리 기능 제공
  • 서블릿 객체는 싱글톤으로 관리
    • 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율
    • 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용
    • 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근
    • 공유 변수 사용 주의
    • 서블릿 컨테이너 종료시 함께 종료
  • JSP도 서블릿으로 변환 되어서 사용
  • 동시 요청을 위한 멀티 쓰레드 처리 지원

 

 

 

--> 다음 게시글에서 < 동시 요청 - 멀티 쓰레드 > 관련 글 예정

더보기

참고 : <인프런> 김영한 : MVC 패턴(1) - 웹 애플리케이션 이해

728x90
반응형