카테고리 없음

Servlet

아리빠 2024. 1. 18. 15:19

서블릿은 클래스를 만든 후, 서블릿 컨테이너에 등록해야 사용할 수 있다.

// 등록 방법 1)
//   웹 애플리케이션 배치 파일(web.xml; DD(Deploy Description) 파일)에 서블릿 정보를 등록한다.
//   => WEB-INF/web.xml
//   => DD File: Deployment Descriptor File
//   => 배치 예:
//      <servlet>
//          <servlet-name>서블릿별명</servlet-name>
//          <servlet-class>서블릿 클래스의 전체이름(패키지명 포함)</servlet-class>
//      </servlet>
//
//      <servlet-mapping>
//          <servlet-name>서블릿별명</servlet-name>
//          <url-pattern>클라이언트에서 요청할 때 사용할 URL(/로 시작해야 한다.)</url-pattern>
//      </servlet-mapping>
// 등록 방법 2)
//   서블릿 클래스 선언부에 @WebServlet 애노테이션을 붙인다.
//   => @WebServlet
//      @WebServlet(URL)
//      @WebServlet(value=URL)
//      @WebServlet(urlPatterns={"URL1", "URL2", ...})

 

서블릿 구동 과정

// 1) 웹 브라우저가 서블릿 실행을 요청한다.
// 2) 서블릿 컨테이너는 해당 URL의 서블릿 객체를 찾는다.
// 3.1) 서블릿 객체를 아직 만들지 않았다면,
// => 서블릿 클래스에 대해 인스턴스를 생성한다.
// => 생성자를 호출한다.
// => init()를 호출한다.
// => service()를 호출한다.
// 3.2) 서블릿 객체가 생성되어 있다면,
// => service()를 호출한다.

IF 웹 애플리케이션 종료시 => 생성된 모든 서블릿들의 destroy() 메서드 호출

 

특별한 옵션을 주지 않는 이상 클라이언트가 최초로 요청했을 때 서블릿 인스턴스를 생성

서블릿 인스턴스는 클래스마다 오직 한개만 생성

init(), destroy()는 오직 한번만 호출됨

service()는 클라이언트가 요청할 때 마다 호출

 

 

※ 서블릿 인스턴스는 오직 클래스마다 한개만 생성되기에, 모든 클라이언트가 같은 서블릿 인스턴스를 사용

=>클라이언트마다 구분되어야 하는 데이터는 서블릿 인스턴스에 보관 불가