본문 바로가기

개발/Programming

서블릿(Servlet)

반응형

서블릿이란?


  • 자바로 만든 CGI(Common Gateway Interface) 프로그램
CGI : 웹 서버 상에서 사용자 프로그램을 동작시키기 위한 프로그램.
  • 초기 동적 웹 페이지
  • 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 Java 클래스
  • HttpServlet 클래스를 상속받아 구현됨.

 

서블릿 동작 과정

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

servlet 동작 과정

 

서블릿 특징

  • 서버 쪽에서 실행되면서 기능을 수행
  • 기존의 정적인 웹 프로그램의 문제점을 보환하여 동적인 여러 가지 기능 제공
  • 스레드 방식으로 실행
  • 자바로 만들어져 자바의 특징(객체 지향)을 가짐
  • 컨테이너에서 실행 ( 컨테이너 종류에 상관없이 실행)
  • 보안 기능을 쉽게 적용
  • 웹 브라우저에서 요청 시 기능을 수행

서블릿 API 계층 구조와 기능


Servlet 클래스 계층 구조

  • 서블릿 API는 Servlet과 ServletConfig 인터페이스를 구현해 제공
  • GenericServlet 추상 클래스는 Servlet과 ServletConfig 인터페이스의 추상 메서드를 구현
  • HttpServlet이 GenericServlet 추상 클래스를 상속 받음

 

① Servlet 인터페이스

  • javax.servlet 패키지에 선언되어 있음
  • Servlet 관련 추상 메서드를 선언
  • init( ), service( ), destroy( ), getServletInfo( ), getServletConfig( )를 선언

 

② ServletConfig 인터페이스

  • javax.servlet 패키지에 선언되어 있음
  • Servlet 기능 관련 추상 메서드가 선언
  • getInitParameter( ), getInitParameterNames( ), getServletContext( ), getServletName( )이 선언

 

③ GenericServlet 클래스

  • javax.servlet 패키지에 선언되어 있음
  • 상위 두 인터페이스를 구현하여 일반적인 서블릿 기능을 구현한 클래스
  • GenericServlet 추상 클래스는 여러 통신 프로토콜에 따라 각각 service( )를 오버라이딩해서 구현

 

④ HttpServlet 클래스

  • javax.servlet.http 패키지에 선언되어 있음
  • GenericServlet을 상속받아 HTTP 프로토콜을 사용하는 웹 브라우저에서 서블릿 기능을 수행
  • 요청 시 service( )가 호출되면서 요청 방식에 따라 doGet( )이나 doPost( )가 차례대로 호출

 

   - HttpServlet의 여러가지 메서드 


메서드 기능
protected doDelete(HttpServletRequest req, HttpServletResponse resp) service( )를 통해 호출하여 서블릿이 DELETE request를 수행
protected doGet(HttpServletRequest req, HttpServletResponse resp) service( )를 통해 호출하여 서블릿이 GET request를 수행
protected doHead(HttpServletRequest req, HttpServletResponse resp) service( )를 통해 호출하여 서블릿이 HEAD request를 수행
protected doPost(HttpServletRequest req, HttpServletResponse resp) service( )를 통해 호출하여 서블릿이 POST request를 수행
protected service(HttpServletRequest req, HttpServletResponse resp) 표준 HTTP request를 public service( )에서 전달받아
doXXX( ) 메서드를 호출
public service(HttpServletRequest req, HttpServletResponse resp) 클라이언트의 request를 protected service( )에게 전달
* 클라이언트 요청 → public service( ) 호출 → protected service( ) 호출 → doXXX( ) 메서드 호출

 

반응형