서블릿의 실행순서
Java EE는 프로그램의 실행 흐름을 컨테이너가 제어합니다.
이처럼 개발자가 아닌 제3자가 프로그램의 실행 흐름을 제어하는 것을 IoC(Inversion of Control)이라고 합니다.
서블릿도 Java EE의 기술이기 때문에 컨테이너가 제어합니다.
따라서 Java EE 기반 프로그램을 개발할 때에는 애플리케이션 컨테이너가 어떤 순서로 프로그램을 동작시키는지 알고,
이 순서에 맞게 개발해야 합니다.
① 클라이언트로부터 처리 요청: 웹서버가 URI 분석하여 서블릿 요청이면 서블릿 컨테이너로 처리를 넘긴다.
서블릿 컨테이너는 요청받은 서블릿을 WEB-INF/classes나 WEB-INF/lib에서 찾 아 실행 준비한다.② 최초 요청 여부 판단: 서블릿 객체가 메모리에 없으면 최초 요청이고, 있으면 최초 요청이 아니다.
③ 서블릿 객체 생성: 최초 요청이 들어왔을 때 딱 한 번만 객체를 생성한다.
(new 명령어로 여러 개의 객체를 생성할 수 있는 일반 자바 객체와 다름.)④ init() 메소드 실행: Servlet 인터페이스에 선언되어 있으며, GenericServlet 클래스에 기능이 구현되어 있다.
(따라서 재정의하고 싶으면 여기서) 서블릿 객체의 초기화 작업.⑤ service() 메소드 실행: service() 메소드는 클라이언트의 요청이 있을 때마다 실행.
콜백 메소드(callback method)와 서블릿 객체의 생명주기
콜백 메소드: 어떤 객체에서 어떤 상황이 발생하면 컨테이너가 자동으로 호출하여 실행되는 메소드
콜백 메소드들이 서블릿을 실행합니다. init(), service(), destroy()가 콜백 메소드입니다.
메소드 이름 | 메소드가 실행되는 시점 | 실행 횟수 | 기능 구현 |
init() | 클라이언트로부터 최초로 서블릿 요청이 있을 때 | 1 | 초기화 작업 |
service() | 클라이언트로부터 요청이 있을 때마다 | n | 실제 서블릿이 처리해야 하는 작업 |
destroy() | 서블릿 객체가 메모리에서 삭제될 때 | 1 | 자원 해제 작업 |
☆ 요청이 있을 때마다 서블릿 객체를 생성하는 것이 아니고, 최초 요청 때 생성한 서블릿 객체를 계속 사용합니다!
이전의 다른 CGI(Common Gateway Interface) 프로그램들은 요청이 있을 때마다 독립적으로 처리되었지만,
서블릿은 한 번 생성한 객체를 재사용하는 거라서 처리속도, 메모리 부분에서 이전의 기술보다 효율적입니다.
서블릿 객체의 삭제
서블릿 객체는 서버를 중지시켜 웹 애플리케이션 서비스를 중지할 때입니다.
이때 destroy() 메소드가 호출되어 실행됩니다.
출처: 처음 해보는 Servlet&JSP 웹 프로그래밍(오정임)
'기타' 카테고리의 다른 글
JetBrain ToolBox를 이용하여 IntelliJ(인텔리제이) 설치 (0) | 2023.05.18 |
---|