728x90
Java Servlet Life Cycle 자바 서블릿 라이프 사이클, 생명주기
Servlet Life Cycle 서블릿 라이프 사이클
객체의 생성부터 소멸까지의 과정을 생명주기 즉 라이프 사이클(Life Cycle)라고 하는데, Servlet의 경우 HttpServlet의 3가지 메소드 init, service, destroy를 오버라이딩하는 라이플 사이클을 가지고 있다.
1). init() - 시작
2). service(request, response) - do get/post 통한 요청
3). destroy() -끝
Servlet 생명주기 특징
WAS는 서블릿 요청을 받으면 해당 서블릿이 메모리에 있는지 확인
- if (메모리에 없을 경우) { - 해당 서블릿 클래스를 메모리에 올림 - init() 메소드 실행} - service()메소드 실행
- WAS가 종료되거나, 웹 어플리케이션이 새롭게 갱신될 경우 destroy() 메소드가 실행
service(request, response) 메소드
HttpServlet의 service메소드는 템플릿 메소드 패턴으로 구현한다.
- 클라이언트의 요청이 GET일 경우에는 자신이 가지고 있는 doGet(request, response)메소드를 호출하고,
-클라이언트의 요청이 Post일 경우에는 자신이 가지고 있는 doPost(request, response)를 호출한다.
package com.test;
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("/ServletLifecycle")
public class ServletLifecycle extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletLifecycle() {
System.out.println("ServletLifecycle 생성~");
}
public void init(ServletConfig config) throws ServletException {
System.out.println("init test 호출~");
}
public void destroy() {
System.out.println("destroy 호출~");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
System.out.println("service호출~");
}
}
위의 코드에 대한 결과는 콘솔창에서 아래와 같이 확인이 가능하다.
<Servlet Console 출력 결과>
ServletLifecycle 생성~
init test 호출~
service호출~
간단한 문장 <연습이다!~> Servlet 출력 코드 예시
package com.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyTest extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.print("<div style=\"font-size: 2em; margin:100px 100px 100px 100px; \">");
out.print("연습이다!~");
String path = req.getContextPath()+"/test02/a.jsp";
out.print("</div>");
out.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
728x90
'JSP-Servlet' 카테고리의 다른 글
Web에서 요청과 응답 HttpServletRequest & Response 특징 (0) | 2021.10.15 |
---|---|
JSP에서 쓰이는 Scope 개념과 종류별 특징 (0) | 2021.10.08 |
[Java Server Pages] JSP란 무엇인가 (자바서버페이지 특징) (0) | 2021.10.07 |
JSP 기본 문법 [선언문, 스크립트릿, 표현식, 주석] (0) | 2021.10.06 |
Servlet란? 서블릿의 특징 (0) | 2021.10.04 |
댓글