본문 바로가기

JSP

서블릿(Servlet) - API, 생명주기

초기 동적 웹 페이지들은 서블릿(servlet)을 이용하여 구현했다. 이 서블릿의 문제점을 보완하여 나온 것이 JSP이다.

 

서블릿?

서블릿은 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스이다.

  • 서블릿은 일반 자바 프로그램과 다르게 독자적으로 실행되지 않고, 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다는 점이 다르다.

서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과를 전송한다. 서버에서 실행되기에 보안과 관련된 기능도 훨씬 안전하게 수행할 수 있다.

클라이언트가 웹 서버에 요청하면 웹 서버는 그 요청을 톰캣과 같은 웹 애플리케이션 서버(WAS)에 위임한다. WAS에서는 각 요청에 해당하는 서블릿을 실행한다.
그리고 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환하여 클라이언트에 전송한다.

특징

  1. 서버 쪽에서 실행되면서 기능을 수행한다.
  2. 기존의 정적인 웹 프로그램의 문제점을 보완하여 동적인 여러가지 기능을 제공한다.
  3. 스레드 방식으로 실행

프로세스 -> 실행중인 프로그램
스레드 -> 프로세스 내에서 실제로 작업을 수행하는 주체

  1. 자바로 만들어져 객체지향 특징을 갖는다.
  2. 보안 기능을 적용하기 쉽다.
  3. 웹 브라우저에서 요청 시 기능을 수행

 

서블릿 API 계층 구조

서블릿은 자바로 만들어졌으므로 클래스들 간의 계층 구조를 가진다.

서블릿 API는 Servlet과 ServletConfig 인터페이스를 구현하여 제공하며 GenericServlet 추상 클래스가 이 두 인터페이스의 추상 메서드를 구현한다. 그리고 이 GenericServlet을 다시 HttpServlet이 상속받는다.

 

GenericServlet은 일반적인 여러 통신 프로토콜에 대한 클라이언트/서버 프로그램에서 서블릿 기능을 구현하는 클래스이다. HttpServlet은 이 GenericServlet을 상속받는다.

 

HttpServlet은 HTTP 프로토콜을 사용하는 서블릿 기능을 구현하는 클래스이다.

 

서블릿의 생명주기 메서드

  • 서블릿 생명주기 메서드란 서블릿 실행 단계마다 호출되어 기능을 수행하는 콜백 메서드를 말한다.
  1. init()
  • 서블릿 요청 시 맨 처음 한번만 호출된다.
  • 서블릿 생성 시 초기화 작업을 주로 수행한다.
  1. doGet(), doPost()
  • 서블릿 요청 시 매번 호출된다.
  • 실제로 클라이언트가 요청하는 작업을 수행한다.
  1. destroy()
  • 서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출된다.
  • 서블릿의 마무리 작업을 주로 수행한다.

 

 

destory()는 서블릿이 메모리에서 소멸될 때 여러 가지 종료 작업을 수행하는데 이런 기능이 필요 없을 시에는 생략해도 상관없다. 하지만 doGet이나 doPost와 같이 do로 시작하는 메서드는 서블릿의 핵심 기능을 처리하므로 반드시 구현하여야 한다.