서블릿 라이프사이클
서블릿의 라이프사이클은 서블릿 컨테이너에 의해 관리됩니다. 라이프 사이클은 5단계로 요약할 수 있습니다.- Load Servlet 클래스
- Create Servlet instance
- Call 메소드 init()
- 메서드를 호출합니다. service()
- 메서드를 호출합니다. destroy()
4단계는 매번 여러 번 실행됩니다. 요청 HTTP.
5단계는 서블릿 컨테이너가 서블릿을 파괴할 때 실행됩니다.
이것은 서블릿의 라이프사이클을 나타내는 알고리즘입니다.
단계는 아래에 자세히 설명되어 있습니다.
서블릿 클래스 로드
먼저, 서블릿을 호출하려면, 서블릿 컨테이너는 Servlet 클래스를 로드해야 합니다. 이것은 다른 클래스와 마찬가지로 수행됩니다.Create Servlet instance
이제 클래스가 로드되었으므로 컨테이너는 새 서블릿 인스턴스를 만듭니다. 일반적으로 하나의 인스턴스만 만들어지고 요청 동일한 서블릿 인스턴스에서 처리됩니다. 에 있습니다 서블릿 컨테이너를 결정해야 하지만 일반적으로 인스턴스는 하나뿐입니다.Call init()
메소드 init()은 한 번만 호출되도록 설계되었습니다. 인스턴스가 생성되면 init()이 호출됩니다. . 첫 번째 요청이 처리되기 전에 서블릿을 초기화할 수 있습니다. 서블릿 초기화 매개변수는 web.xml.init() 메서드는 다음과 같습니다.
public void init() throws ServletException {
// 초기화...
}
Call service()
수신된 각 요청에 대해 서버는 새 스레드를 만들고 methodservice()입니다. 메서드 service()은 HTTP 요청의 유형(GET, POST, PUT, DELETE 등)을 확인하고 해당 메소드 doGet, doPost, doPut, doDelete 등을 호출합니다. 서블릿이 활성 상태로 유지되는 한 service()을 다시 호출할 수 있습니다. 따라서이 단계는 여러 번 실행되기 때문에 서블릿의 수명주기에서 가장 긴 단계 일 수 있습니다.이 메서드의 선언은 다음과 같습니다.
public void service(ServletRequest 요청,메서드 doGet() 및 doPost()은 도착할 때마다 자주 사용됩니다. 요청. 다음은 성명서입니다 두 방법 모두.
ServletResponse 응답)
ServletException을 throw합니다. IOException{
}
doGet()
GET 요청은 정의된 메소드가 없는 URL 또는 HTML 양식으로 생성되며 doGet().public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// code
}
doPost()
La 메서드 쿼리 POST는 HTML 양식으로 생성되며 doPost().
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// 서블릿 코드
}
Call destroy()
메서드 < span style="font-family: Courier New, Courier, minivan;" >destroy()은 서블릿의 라이프사이클이 끝날 때 한 번만 호출됩니다. 이 방법을 사용하면 연결을 닫고, 스레드를 중지하고, 쿠키 목록을 저장할 수 있습니다.After destory()이 호출되면 서블릿 객체가 파괴됩니다. 메서드 destory()은 다음과 같습니다:
public void destroy() {
// 종료 코드...
}