package ex01;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * # HttpServlet class
 * - GenericServlet 을 상속 받아서 HTTP 프로토콜을 사용하는 웹 브라우저에서 Servlet 기능을 수행.
 * 
 * # Servlet LifeCycle
 * - 초기화 : init()
 *   > Servlet 요청시 맨 처음 한번만 호출.
 *   
 * 	 작업 수행 : doGet(), doPost()
 *   > Servlet 요청시 매번 호출.
 *     실제로 클라이언트가 요청하는 작업 수행.
 *   
 *	 종료 : destroy()
 *   > Servlet이 기능을 수행하고 메모리에서 소멸될 때 수행.
 *   
 * # Servlet 생성 과정
 * - 1. 사용자 정의 Servlet Class 구현.
 *   2. Servlet 메서드 구현.
 *   3. Servlet Mapping 작업.  -> 작업 Class이름과 연결해주는 작업.
 *   4. 웹 브라우저에서 Servlet Mapping 이름으로 요청.
 * 
 * 
 * # Servlet Mapping
 * - web.xml 파일에서 설정.
 * 
 * 
 */
public class LifeCycle extends HttpServlet {
	
	// 최초 요청시 한번만 실행
	public void init(ServletConfig config) throws ServletException {
		System.out.println("- init() run -");
	}
	
	// 요청시마다 실행
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("- doGet() run -");
	}
	
	// 종료
	public void destroy() {
		System.out.println("- destroy() run -");
	}
}