티스토리 뷰
서블릿 생명주기
- 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 |
댓글