티스토리 뷰

728x90

[부스트 코스] 웹 백엔드 학습 내용을 정리한 글입니다.

 

 

브라우저에서 서블릿 주소로 Request를 요청하면 해당 서블릿이 메모리에 있는지 확인합니다.

없다면 인스턴스를 생성(Create) 후 initialize를 합니다. 이때 init() 메소드가 호출됩니다.

get요청인 경우 doGet() 메소드가 호출 됩니다.

서블릿 코드가 변경된 경우 destroy() 메소드가 호출됩니다.

그리고 다시 init(), doGet() 호출됩니다.

init()가 호출 된 후 다른 요청이 들어 오면 doGet()만 호출됩니다.

 

package examples;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/lifecycle")
public class LifecycleServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public LifecycleServlet() {
        System.out.println("LifecycleServlet 생성!!");
    }

	public void init(ServletConfig config) throws ServletException {
		System.out.println("init test 호출!!");
	}
	
	public void destroy() {
		System.out.println("destroy 호출!!");
	}
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet 호출!!");
	}
}

 

위의 코드를 실행한 결과 입니다.

 

 

 

doGet이 여러번 호출 된 이유는 여러 브라우져에서 호출 했기때문입니다.

destroy는 해당 파일 외 다른 서블릿 코드가 변경되더라도 호출 됩니다.

728x90
댓글