티스토리 뷰

Language/Java

Servlet 생명주기

Seogineer 2020. 12. 9. 21:14

서블릿 생명주기

  • WAS는 서블릿 요청을 받으면 해당 서블릿이 메모리에 있는지 확인한다.
  • 메모리에 없다면, 해당 서블릿을 메모리에 올린다. init() 실행.
  • 메모리에 있다면, service() 실행.
  • WAS가 종료되거나, 웹 어플리케이션이 새롭게 갱신될 경우 destroy() 실행.

소스코드

package examples;

import java.io.IOException;
import java.io.PrintWriter;

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("/LifecycleServlet")
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 호출!!!");
    }

    public void destroy() {
        System.out.println("destroy 호출!!!");
    }

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("service 호출!!!");
    }
}

결과

최초 실행

LifecycleServlet 생성!!!
init 호출!!!
service 호출!!!

재요청(새로고침)

service 호출!!!

서버 종료

destroy 호출!!!

service(request, response) overriding

  • service가 아닌 doGet 이나 doPost를 선언할 수 있다.
  • 클라이언트의 요청이 GET일 경우 doGet(request, response) 호출.
  • 클라이언트의 요청이 POST일 경우 doPost(request, response) 호출.

참조

https://www.edwith.org/boostcourse-web/lecture/254272/
https://www.edwith.org/boostcourse-web/lecture/254273/

'Language > Java' 카테고리의 다른 글

redirect와 forward  (0) 2020.12.19
JSP(JavaServer Pages)  (0) 2020.12.17
접근제어자(Access Modifiers)  (0) 2020.12.09
Overriding vs Overloading  (0) 2020.12.08
static  (0) 2020.12.08
댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글