▶ 서블릿(Servlet)
˙서버쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스
˙자바의 특징을 가지지만 독자적으로 실행되지 못하고 Tomcat과 같은 JSP/Servlet 컨테이너에서 실행
˙서블릿의 특징
① 서버 쪽에서 실행되면서 기능 수행
② 기존의 정적인 웹 프로그램의 문제점을 보완하여 동적인 여러가지 기능 제공
③ 스레드 방식으로 실행
④ 자바로 만들어져 자바의 특징(객체 지향)을 가짐
⑤ 컨테이너에서 실행
⑥ 컨테이너 종류에 상관업이 실행(플랫폼에 독립적)
⑦ 보안기능을 적용하기 쉬움
⑧웹 브라우저에 요청 시 기능 수행
▶ 서블릿(Servlet) API
서블릿 API Servlet과 ServletConfig 인터페이스를 구현해 제공하며 GenericServlet 추상 클래스가 이 두 인터페이스의 추상 메서드를 구현
그리고 GenericServlet을 다시 HttpServlet이 상속 받음
˙서블릿(Servlet) API 구성 요소 특징
① Servlet 인터페이스
- javax.servlet 패키지에 선언되어 있음
- Servlet 관련 추상 메서드 선언
- init(), service, destory(), getServletInfo(), getServletConfig()
② ServletConfig 인터페이스
- javax.servlet 패키지에 선언되어 있음
- Servlet 기능 관련 추상 메서드 선언
- getInitParameter(), getInitParmaeterNames(), getServletContext(), getServletName()
③ GenericServlet 클래스
- javax.servlet 패키지에 선언되어 있음
- 상위 두 인터페이스를 구현하여 일반적인 서블릿 기능을 구현한 클래스
- GenericServlet을 상속받아 구현한 사용자 서블릿은 사용되는 프로토콜에 따라 각각 service()를 오버라이딩 해서 구현
④ HttpServlet 클래스
- javax.servlet.http 패키지에 선언되어 있음
- GenericServlet 을 상속받아 http 프로토콜을 사용하는 웹 브라우저에서 서블릿 기능을 수행
- 웹 브라우저 기반 서비스를 제공하는 서블릿을 만들 때 상속받아 사용
- 요청 시 service()가 호출되면서 요청방식에 따라 doGet()이나 doPost()가 차례대로 호출됨
˙HttpServlet의 여러 가지 메서드 기능
protected doDelete(HttpServletRequest req, HttpServletResponse resp)
: 서블릿이 request를 수행하기 위해 service()를 통해서 호출됨
protected doGet(HttpServletRequest req, HttpServletResponse resp)
: 서블릿이 Get request를 수행하기 위해 service()를 통해서 호출됨
protected doHead(HttpServletRequest req, HttpServletResponse resp)
: 서블릿이 HEAD request를 수행하기 위해 service()를 통해서 호출됨
protected doPost(HttpServletRequest req, HttpServletResponse resp)
: 서블릿이 POST request를 수행하기 위해 service()를 통해서 호출됨
protected service(ServletRequest req, ServletResponse resp)
: request를 public service()에서 전달받아 doXXX() 메서드를 호출함
public service(ServletRequest req, ServletResponse resp)
: 클라이언트의 request를 protected service()에 전달
▶ 서블릿의 생명주기 메서드
초기화 [ init( ) ]
- 서블릿 요청시 맨 처음한번만 호출됨
- 서블릿 생성 시 초기화 작업을 주로 수행함
작업수행 [ doGet( ) / doPost( ) ]
- 서블릿 요청 시 매번 호출됨
- 실제로 클라이언트가 요청하는 작업을 수행함
종료 [destory( ) ]
- 서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출됨
- 서블릿의 마무리 작업을 주로 수행함