Servlet 인터페이스

uglyduck.dev·2020년 9월 29일
1

개념 모아 🗂

목록 보기
13/40
  • 서블릿 클래스는 반드시 javax.servlet.Servlet 인터페이스를 구현해야 함
  • 서블릿 컨테이너가 서블릿에 대해 호출할 메서드를 정의한 것이 Servlet 인터페이스

servlet

서블릿의 생명주기와 관련된 메서드: init(), service(), destroy()

  • 서블릿의 생성과 실행, 소멸, 즉 생명주기와 관련된 메서드
구분설명
init()서블릿 컨테이너가 서블릿을 생성한 후 초기화 작업을 수행하기 위해 호출하는 메서드
service()실질적으로 서비스 작업을 수행하는 메서드
destroy()서블릿 컨테이너가 종료되거나 웹 애플리케이션이 멈출 때, 또는 해당 서블릿을 비활성화 시킬 때 호출하는 메서드
ex) 자원의 해제, 데이터 저장, 마무리 작업

Servlet 인터페이스 기타 메서드: getServletConfig(), getServletInfo()

  • 서블릿 정보를 추출할 필요가 있을 때 호출하는 보조 메서드
구분설명
getServletConfig()서블릿 설정 정보를 다루는 ServletConfig 객체를 반환
ex) 서블릿 이름, 서블릿 초기 매개변수 값, 서블릿 환경정보
getServletInfo()서블릿을 작성한 사람에 대한 정보
ex) 서블릿 버전, 권리

서블릿 선언

<servlet>
    <servlet-name>ServletName</servlet-name>
    <servlet-class>test.servlets.ServletClass</servlet-class>
</servlet>
  • servlet-name: 서블릿 별명을 설정. 공백(스페이스 문자) 포함 가능
  • servlet-class: 패키지 이름을 포함한 서블릿 클래스명(*QName)

QName

  • 패키지명 + 클래스명 = Fully qualified name = QName

서블릿에 URL 부여

<servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
<servlet-mapping>
  • servlet-mapping: 서블릿과 URL을 매핑할 때 사용함
  • servlet-name: servlet 태그에서 정의한 서블릿 별명
  • url-pattern: 서블릿을 요청할 때 클라이언트가 사용할 URL을 설정. "/"는 컨텍스트 루트

서블릿 구동 절차

서블릿 구동 절차
1. 클라이언트의 요청이 들어오면 서블릿 컨테이너는 서블릿을 찾음
2. 서블릿이 없다면, 서블릿 클래스를 로딩하고 인스턴스를 준비한 후 생성자를 호출함. 그리고 초기화 메서드인 init()를 호출
3. 클라이언트 요청을 처리하는 service() 메서드를 호출함. 클라이언트의 요청에 대해 서비스를 제공함
4. service() 메서드에서 만든 결과를 HTTP 프로토콜에 맞추어 클라이언트에 응답하고 요청처리를 완료
5. 서블릿 컨테이너를 종료하거나 웹 애플리케이션을 종료하는 경우
6. 서블릿 컨테이너는 종료되기 전에 서블릿이 마무리 작업을 수행할 수 있도록 생성된 모든 서블릿에 대해 destroy() 메서드를 호출

Reference

  • 엄진영, 『자바 웹 개발 워크북』, 프리렉(2018.8.9), 119~125p
profile
시행착오, 문제해결 그 어디 즈음에.

2개의 댓글

comment-user-thumbnail
2021년 11월 10일

잘 봤습니다.
내용 중 서블릿 구동방식 표에서 (6) service() -> destroy()로 수정되어야 할 것 같습니다.

1개의 답글