본문 바로가기

SpringBoot

서블릿 생명주기

* 서블릿은 JVM기반에서 웹 개발을 하기위한 API

- 자바를 실행하기 위해 JRE(Java Runtime Environment)가 필요한 것 처럼, 서블릿을 실행하기 위해서는 웹 애플리케이션 컨테이너가 필요하다.

- 서블릿은 HTTP요청과 응답을 처리하기 위한 내용을 담고 있다(JavaEE에 포함되어있음)

 

JAVA EE(Enterprise Edition) 스펙

1. 서블릿 설정(Gradle이용)

- 그래들은 메이븐, 엔트와 같은 빌드도구로 자바에서 라이브러리를 편리하게 추가할 수 있는 도구라 생각하면 된다.

- JAR파일은 build.gradle 파일에 추가하면 사용할 수 있다.

 

2. 서블릿 생명주기

- 서블릿은 자신만의 생명주기를 갖고있으며 다음과 같다.

서블릿의 생명주기는 초기화 - 서비스 - 소멸의 3단계로 구성되어 있다.

* 초기화단계 : 로드한 서블릿의 인스턴스를 생성하고 리소스를 로드하는 등, 클래스 생성자의 초기화 작업과 동일한 단계.

* 서비스단계 : 클라이언트의 요청에 따라 호출할 메소드를 결정.

* 소멸단계 : 런타임 오류가 발생하거나, 서블릿 컨테이너가 종료되었을 때 발생. 서블릿이 언로드 되어 결과가 정상적으로 표출되지 않음.

 

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

@WebServlet("/init")
public class InitServlet extends HttpServlet{
	@Override
    public void init() throws ServletException{
    	System.out.println("Init Called!");
    }
}

이 경우 브라우저에서 localhost:8080/init을 접속하면 Init Called! 가 콘솔창에 출력된다. 초기화 시점에 init메소드가 출력되는 것으로 브라우저에서 F5를 여러번 클릭해도 결과가 반복되지 않는다.

 

@WebServlet(name="Init",urlPatterns={"/init"})
public class ---중략----

위처럼 name파라미터와 , urlPatterns를 지정해줄 수 있다.