반응형
서블릿이란?
- 자바로 만든 CGI(Common Gateway Interface) 프로그램
CGI : 웹 서버 상에서 사용자 프로그램을 동작시키기 위한 프로그램.
- 초기 동적 웹 페이지
- 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 Java 클래스
- HttpServlet 클래스를 상속받아 구현됨.
서블릿 동작 과정
- 클라이언트가 웹 서버에 URL 요청
- 요청을 톰캣과 같은 웹 애플리케이션 서버(WAS)에 위임
- WAS는 각 요청에 해당하는 서블릿을 실행
- 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환하여 클라이언트에 전송
서블릿 특징
- 서버 쪽에서 실행되면서 기능을 수행
- 기존의 정적인 웹 프로그램의 문제점을 보환하여 동적인 여러 가지 기능 제공
- 스레드 방식으로 실행
- 자바로 만들어져 자바의 특징(객체 지향)을 가짐
- 컨테이너에서 실행 ( 컨테이너 종류에 상관없이 실행)
- 보안 기능을 쉽게 적용
- 웹 브라우저에서 요청 시 기능을 수행
서블릿 API 계층 구조와 기능
- 서블릿 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( ) 메서드 호출
반응형
'개발 > Programming' 카테고리의 다른 글
ServletContext (0) | 2021.06.13 |
---|---|
서블릿 포워드 와 바인딩 기능 (0) | 2021.06.10 |
[ORACLE] ORA-01950: 테이블스페이스 'USERS'에 대한 권한이 없습니다. (0) | 2021.05.22 |
동적 웹 프로그래밍 (0) | 2021.04.22 |
웹 프로그래밍의 기본 (2) | 2021.04.18 |