상세 컨텐츠

본문 제목

서블릿(Servlet) 생명주기(LifeCyle)

JSP

by kwanghyup 2019. 11. 10. 17:42

본문

다이나믹 웹 프로젝트 생성

프로젝트명 : serveltLifeCycle

다음과 같이 서블릿 클래스 생성 : ServletLifeCycle

매핑설정 

생성할 메소드 체크 

 

다음과 같이 작성 ServletLifeCycle.java

package servlet;

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("/slc.do")
public class ServletLifeCycle extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public ServletLifeCycle() {
        super();
        System.out.println("생성자 메서드");
    }

	public void init(ServletConfig config) throws ServletException {
		System.out.println("init 메서드");
	}

	public void destroy() {
		System.out.println("destory 메서드");
	}

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("service 메서드"); 
		String method = request.getMethod();		
		if (method.equals("GET")) {
			doGet(request, response);
		} else {
			doPost(request,response);
		}
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet 메서드");
		System.out.println("------");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost 메서드");
		System.out.println("------");
	}
}

 

실행 결과 : 서버 실행 후 최초 요청 

최초 요청 후 서버 동작 중 요청

생성자 메서드 init메서드 실행되지 않음 

서버 시작 후 최초 요청 시 한번만 실행됨


 

service() 메서드 

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// get, post에 관계에 없이 공통으로 수행하여야할 로직 작성 
		
		// 요청을 구분해서 요청 방식에 따라  doPost(),doGet() 호출
		System.out.println(request.getMethod()); // getMethod()요청방식 리턴
		String method = request.getMethod();		
		if (method.equals("GET")) {
			doGet(request, response);
		} else {
			doPost(request,response);
		}
	}

destroy() 메서드

public void destroy() {
		System.out.println("destroy"); //서버 종료시 콘솔에 출력되지 않으나 실행은 됨
		// 열었던 스트림 닫기 
		// 사용한 메모리 반환 (close())
	}

 

관련글 더보기

댓글 영역