본문으로 바로가기

[3] 서블릿 구현

category WEB/Servlet & JSP 2018. 10. 18. 16:54
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[ 서블릿 API 문서 : https://docs.oracle.com/javaee/7/api/index.html?javax/servlet/package-summary.html ]


1. 서블릿 클래스 간의 관계

: 서블릿 구현시 반드시 상속받아야 하는 클래스 : HttpServlet

 HttpServlet를 상속받지 않은 클래스는 서블릿이라 할 수 없고 실행되지도 않음.


 -> HttpServlet은 Servlet 인터페이스를 상속받고, GenericServlet 추상클래스를 상속받음.


ㄱ. Servlet 인터페이스 

   : 서블릿 프로그램 개발 시, 반드시 구현해야하는 메소드를 선언하고 있는 인터페이스.

    서블릿 프로그램 실행의 생명주기와 연관된 메소드들 선언.

init(), service(), destroy(), getServletConfig(), getServletInfo() 등.


ㄴ. GenericServlet 추상 클래스

   : Servlet 인터페이스를 상속해서 클라이언트-서버 환경에서 서버단의 애플리케이션으로 필요한 기능을 구현.

service() 메소드를 제외한 모든 메소드를 재정의.


ㄷ. HttpServlet 클래스

   : GenericServlet 클래스를 상속하여 service() 메소드를 재정의. (service 메소드는 요청방식에 따라 다르게..)

HTTP 프로토콜에 기반.


2. 서블릿 실행 순서

: 서블릿 실행 순서를 이해하려면 IoC 개념을 알아야함.

-IoC (Inversion of Control) : 개발자가 아닌 제3자가 프로그램의 실행 흐름을 제어하는 것.

 서블릿 또한 개발자가 제어하는게 아닌 컨테이너가 흐름을 제어함.


① 클라이언트로부터 처리 요청받음.

   : 웹 서버는 요청정보 헤더 안에 있는 URI를 분석. 이때, 요청받은 페이지가 서블릿이면 서블릿 컨테이너에 처리를 넘김.

서블릿 컨테이너는 요청받은 서블릿을 WEB-INF/classes 나 WEB-INF/lib에서 찾아서 실행준비를 함.

② 최초 요청 여부 판단

   : 서블릿 컨테이너는 현재 실행할 서블릿이 최초 요청인지를 판단. 객체가 메모리에 없으면 최초 요청. 

③ 최초 요청이면 서블릿 객체 생성

   : 서블릿을 메모리에 로딩하고 객체를 생성. 

④ init() 메소드 실행

   : Servlet 인터페이스에 선언되어 있고 GenericServlet 클래스에 구현되어 있음.

서블릿 객체의 초기화 작업이 구현되어 있음. (한번만 실행됨)

⑤ service() 메소드 실행

   : 서블릿 요청 순서에 상관없이 클라이언트의 요청이 있을 때마다 실행됨.

실제 서블릿에서 처리해야하는 내용이 구현.

 

 service 메소드 끝나면 서버에서의 실행은 끝. 서버 프로그램 실행 완료 후에는 서블릿 컨테이너가 결과를 웹서버에 전달.

 웹서버는 요청한 클라이언트에 서비스로 응답.

'WEB > Servlet & JSP' 카테고리의 다른 글

[2] Servlet과 JSP  (0) 2018.10.18
[1]자바 개발 플랫폼  (0) 2018.10.18