본문 바로가기
Java, JSP

[JSP] 서블릿(Servlet)과 서블릿 컨테이너(Servlet Container)의 개념

by LasBe 2022. 2. 16.
반응형

서블릿(Servlet)이란


서블릿이란 Dynamic Web Page를 만들 때, 자바를 사용하여 웹을 만들기 위해 필요한 기술입니다.

 

이러한 기술은 Dynamic Web Page란 의미 그대로 동적인 페이지를 제공하기 위해

사용자의 요청에 대한 시점에 페이지를 생성해서 전달해주도록 합니다.

 

요청이 있으면 응답이 있기 마련이고, 여기에는 이 흐름을 제어할 규칙이 존재합니다.

 

서블릿에서는 이 규칙들을 웹 동작 시 다양한 요청과 응답에 대해 편리하고 체계적으로 다룰 수 있도록 지원합니다.

 

또한 주로 MVC 패턴에서 컨트롤러의 역할 구현을 위해 사용하기 때문에

서블릿의 개념을 알아두면 웹 애플리케이션을 제작할 때 데이터 처리에 대한 이해가 수월합니다.

 

서블릿 동작구조

서블릿은 일반적인 자바 코드와 다르지 않지만 서블릿 실행을 위해서는

웹 애플리케이션 형식으로 패키징 하는 과정이 필요하며 서블릿 컨테이너를 통해 실행이 이루어집니다.

 

서블릿 컨테이너에 대한 내용은 아래에서 자세히 다루겠습니다.

 

일반적인 서블릿의 개발, 동작 과정은 아래와 같이 이루어집니다.

 

  1. HttpServlet 클래스를 상속받는 서블릿 클래스를 작성
  2. 컴파일후 웹 애플리케이션으로 패키징
  3. 서블릿 컨테이너에 배포
  4. 클라이언트의 URL 요청
  5. 애너테이션에 등록된 URL 매핑정보를 참고해 해당 서블릿 실행
  6. 요청 메서드에 따라 서블릿의 doGet(), doPost() 등의 메서드 호출
  7. 서블릿은 데이터베이스 연동 등 필요한 작업을 수행
  8. 데이터를 포함한 HTML 형식의 데이터를 클라이언트에게 전달

 

 

서블릿 컨테이너(Servlet Container)


서버에 서블릿을 만들었다고 스스로 작동할 수 없고, 서블릿 컨테이너에 구현되어 있는 규칙대로 관리됩니다.

 

서블릿 컨테이너는 클라이언트의 요청에 대해 응답이 가능하도록 웹서버와 소켓으로 통신하며,

이에 대한 대표적인 웹 애플리케이션 서버로 톰캣이 있습니다.

 

실제로 톰캣은 서블릿 컨테이너만 있는 WAS로, JSP와 서블릿이 실행할 수 있는 환경을 제공합니다.

 

 

서블릿 컨테이너 주요 기능

 

1. 생명주기 관리

서블릿 컨테이너는 다음과 같이 서블릿의 생명주기를 관리해줍니다.

  • 서블릿 클래스를 로딩하여 인스턴스화 
  • 초기화 메소드 호출
  • 요청이 들어오면 적절한 서블릿 메소드 호출 
  • 서블릿 소멸 시 가비지 컬렉션을 통해 메모리에서 제거

 

2. 멀티스레딩 관리

서블릿 컨테이너는 요청이 올 때 마다 스레드를 생성해 작업을 수행합니다.

동시다발적으로 다수의 요청이 오더라도 서버가 알아서 멀티스레딩 환경을 통해 작업을 관리해줍니다.

 

3. 웹서버와의 통신 지원

일반적으로 웹서버와 통신하기 위해서는 소켓을 만든 후 listen, accept 과정을 거쳐야하지만,

서블릿 컨테이너는 이러한 과정을 API로 제공해서 편리한 사용이 가능토록 합니다.

 

4. 선언적인 보안관리

서블릿 컨테이너는 기본적으로 보안에 관련된 내용을 자바 클래스에 구현해 놓지 않아도 됩니다.

기본적으로 보안 관련 내용은 XML 배포 서술자에 기록하기 때문에

만약 보안 이슈가 터져도 자바 소스를 수정해 다시 컴파일 하지 않아도 됩니다.

 

 

 

 

 

 

반응형

댓글


오픈 채팅