IT 도서

자바 웹을 다루는 기술 - 서블릿1

커피마시기 2023. 9. 24. 21:34
    • "자바 웹을 다루는 기술- 이병승" 를 읽고 학습한 내용을 정리하였습니다.

 

 

 

 서블릿이란

  • 서블릿은 서버쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스 이다. 
  • 자바로 작성되어 있으므로 자바의 일반적인 특징을 모두 가진다 그러나 서블릿은 독자적으로 실행되지 못하고 톰캣과 같은 JSP Servlet컨테이너에서 실행된다는 점이 차이가 있다
  • 서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과를 전송 하는데 서버에서 실행되므로 보안과 관련된 기능도 훨씬 안전하게 수행 할 수 있다

 

 

 서블릿의 동작 과정은 아래 사진과 같다

 

 

 기능

  • 서버 쪽에서 실행되면서 기능을 수행
  • 기존의 정적인 웹 프로그램의 문제점을 보완화여 동적인 여러가지 기능을 제공
  • 스레드 방식으로 실행된다
  • 자바로 만들어져 자바의 특징(객체 지향)을 가진다
  • 컨테이너에서 실행되며 컨테이너 종류에 상관없이 실행된다
  • 보안 기능을 적용하기 쉬우며, 웹 브라우저에서 요청 시 기능을 수행한다

 


 

  서블릿 API 계층 구조와 기능

 

  • 서블릿 API는 Servlet과 ServletConfig 인터페이스를 구현해 제공하며 GenericServlet 추상 클래스가 이 두 인터페이스의 추상 메서드를 구현하고 이 GenericServlet을 다시 HttpServlet이 상속을 받는 구조로 형성되어있다

서블릿 클래스 계층 구조

 

 1. 서블릿 API 기능

  •  Servlet 인터페이스 
    • javax.servlet 패키지에 선언되어 있다
    • Servlet 관련 추상 메서드를 선언한다
    • init(), service(), destory(), getServletInfo(), getServletConfig()를 선언한다
  • ServletConfig 인터페이스 
    • javax.servlet 패키지에 선언되어 있다
    • Servlet 기능 관련 추상 메서드가 선언되어 있다
    • getInitParameter(), getInitParameterNames(), getServletContext(), getServletName()이 선언되어 있다
  • GenericServlet 클래스
    • javax.servlet 패키지에 선언되어 있다
    • 상위 두 인터페이스를 구현하여 일반적인 서블릿 기능을 구현한 클래스이다
    • GenericServlet을 상속받아 구현한 사용자 서블릿은 사용되는 프로토콜에 따라 각각 service()를 오버라이딩해서 구현한다
  • HttpServlet 클래스
    • javax.servlet.http 패키지에 선언되어 있다
    • GenericServlet을 상속받아 HTTP 프로토콜을 사용하는 웹 브라우저에서 서블릿 기능 수행
    • 웹 브라우저 기반 서비스를 제공하는 서블릿을 만들 때 상속받아 사용
    • 요청 시 service()가 호출되면서 요청 방식에 따라 doGet()이나 doPost()가 차례대로 호출된다

 

 

2. HttpServlet의 여러 메서드 기능

  • protected doDelete (HttpServletRequest req, HttpServletResponse resp)
    • 서블릿이 Delete request를 수행하기 위해 service()를 통해서 호출된다
  • protected doGet (HttpServletRequest req, HttpServletResponse resp)
    • 서블릿이 Get request를 수행하기 위해 service()를 통해서 호출된다
  • protected doHead (HttpServletRequest req, HttpServletResponse resp)
    • 서블릿이 HEAD request를 수행하기 위해 service()를 통해서 호출된다
  • protected doPost (HttpServletRequest req, HttpServletResponse resp)
    • 서블릿이 Post request를 수행하기 위해 service()를 통해서 호출된다
  • protected service (ServletRequest req, ServletResponse resp)
    • request를 public service()에서 전달받아 doXXX() 메서드를 호출한다
  • public service (ServletRequest req, ServletResponse resp)
    • 클라이언트의 request를 protected service()에게 전달한다

 

 

3. 서블릿의 생명주기 메서드

  • 서블릿 실행 단계마다 호출되어 기능을 수행하는 콜백 메서드를 말한다
  • init(), destroy() 는 해당하는 기능이 필요없으면 생략해도 상관없다
  • doGet(), doPost()와 같은 do로 시작하는 메서드는 서블릿의 핵심 기능을 처리하므로 반드시 구현해야한다
생명주기 단계 호출 메서드 특징
초기화 init() 서블릿 요청 시 맨 처음 한번만 호출된다
서블릿 생성 시 초기화 작업을 주로 수행 한다
작업 수행 doGet()
doPost()
서블릿 요청 시 매번 호출된다
실제로 클라이언트가 요청하는 작업을 수행한다
종료 destroy() 서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출된다
서블릿의 마무리 작업을 주로 수행한다