티스토리 뷰
[부스트 코스] 웹 백엔드 학습 내용을 정리한 글입니다.
브라우저에서 서블릿 주소로 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는 해당 파일 외 다른 서블릿 코드가 변경되더라도 호출 됩니다.
댓글