티스토리 뷰

728x90

1. Servlet 메서드 : jvax.servlet.Servlet인터페이스에 정의된 메서드는 init(), service(), destroy(),getServletInfo(), getServletConfig()가 있다.

이중 생명주기와 관련된 메서드는 init(), service(), destroy()이다.

  • init() : 서블릿 컨테이너가 서블릿을 생성한 후 초기화 작업을 수행하기위해 호출. 서블릿이 클아이언트의 요청을 처리하기 전에 준비할 작업이 있다면 이 메서드에 작성한다. (예) 디비연결, 외부 스토리지 서버와 연결 등...
  • service() : 클라이언트가 요청할 때 마다 호출되는 메서드. 서블릿이 해야할 일을 작성하면 된다.
  • destroy() : 서블릿 컨테이너가 종료되거나 웹 애플리케이션이 멈출 때 호출. 서비스 수행을 위해 확보했던 자원을 해제한다거나 데이터를 저장하는 등의 마무리 작업을 하면 된다.

2. 동작 과정

 클라이언트가 웹 브라우저에 URL을 입력하면 해당하는 HTTP Request를 해당하는 서버의 Servlet Container에 보낸다.

 Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다.

 클라이언트가 요청한 URL을 DD(배포서술자, Deplyment Descriptor)를 참조해서 분석하여 어느 서블릿에 대한 요청인지 찾는다.

 Servlet Container는 service() 메소드를 호출하며, POST, GET여부에 따라 doGet() 또는 doPost()가 호출된다.

 doGet() 또는 doPost() 메소드는 동적인 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보낸다.

 응답이 완료되면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.

 


3.DD(Deployment Descriptor : 배포 서술자)

웹 컨테이너에게 사용자가 지금 접근한 URL 주소가 서블릿 요청임을 인식하고 그 서블릿 클래스의 위치는 어디에 있다고

알려주기 위해 필요한 정보들이 적혀 있는 파일이다. 주로 프로젝트의 WebContent/WEB-INF/web.xml 파일에 작성된다.

 

  <servlet> 
  	<servlet-name>PaymentFrontController</servlet-name>  <!-- 서블릿 별명  -->
  	<servlet-class>web.payment.action.PaymentFrontController</servlet-class> <!-- 패키지를 포함한 서블릿 클래스명  -->
  </servlet> 
  <servlet-mapping> 
  	<servlet-name>PaymentFrontController</servlet-name> <!-- servlet에서 정의한 서블릿 별명  -->
  	<url-pattern>*.pa</url-pattern> <!-- 서블릿을 요청할 때 클라이언트가 사용할 URL -->
  </servlet-mapping>
 

4. 생명주기

① 클라이언트 요청이 들어오면 서블릿 컨테이너는 서블릿을 찾는다.

②서블릿이 없다면 서블릿 클래스를 로딩하고 인스턴스를 준비한 후 생성자를 호출한다. 그리고 서블릿 초기화 메서드인 init()호출.

③클라이언트 요청을 처리하는 service()메서드 호출. GET, POST여부에 따라 실행된다. 여러 클아이언트가 동시에 요청을 하더라도 쓰레드가 생성되므로 동시에 service가 실행되기 때문에 수행 속도가 빠르다.

④service()메서드의 결과를 HTTP 프로토콜에 맞추어 클라이언트에 응답하는 것으로 요청처리 끝!

⑤시스템 운영자가 컨테이너를 종료하려고 함.

⑥생성된 모든 서블릿에 대해 destroy()메서드 호출

**서블릿 인스턴스는 하나만 생성되어 웹 애플리케이션이 종료될 때 까지 사용된다. 따라서 인스턴스 변수에 특정 사용자를 위한 데이터를 보관하거나 클라이언트가 보낸 데이터를 일시적으로 보관하기 위해 서블릿의 인스턴스 변수를 사용하면 안된다. (Singleton Pattern)

 

 

출처: http://hackersstudy.tistory.com/72 [공대인들이 직접쓰는 컴퓨터공부방]

 

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31