Servlet

어겐어갠·2022년 4월 21일
0

서블릿(Servlet)?

자바를 사용해 웹페이지를 동적으로 생성하는 서버측 프로그램
자바 클래스의 일종으로 웹 서버의 성능을 향상시킨다.
JSP와 유사하지만 JSP는 HTML 안에 Java코드가 있고, 서블릿은 그 반대로 Java코드 안에 HTML을 포함한다.

서블릿의 특징

  • 동적으로 작동하는 웹 어플리케이션 컴포넌트
  • 응답에 html을 사용
  • Java Thread를 이용하여 동작한다.
  • MVC 패턴에서 Controller이다.
  • javax.servlet.http.HttpServlet 클래스를 상속받는다.
  • UDP보다 처리 속도가 느리다.
  • HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.

서블릿 컨테이너

  • 서블릿을 관리해주는 컨테이너. 대표적으로 톰캣
  • 클라이언트 요청을 받으면 HttpServletRequest, HttpSevletReponse 객체를 생성해 응답한다.
  • 생명주기(LifeCycle)을 관리한다.
  • 웹 서버와의 통신을 지원함으로써 개발자를 돕는다.
  • 서블릿 생명주기를 통해 쓰레드를 생성, 소멸시켜 관리해준다.
  • 선언적인 보안관리를 통해 보안 관련된 기능을 지원한다.

서블릿의 동작 과정

  1. 요청을 받고 Servlet Request, Servlet Response 객체를 생성
  2. 매핑할 Servlet을 확인(없을경우 init을 통해 생성)
  3. Servlet Container에 쓰레드를 생성하고 service를 실행
  4. 응답 처리 후 distory로 Servlet Request, Servlet Response를 소멸

서블릿 생명주기(Life Cycle)

  1. 요청이 들어오면 컨테이너는 해당 서블릿이 메모리에 있는지 확인하고,
  • 없을 경우 init()메서드를 호출한다.
  • init()메서드는 처음 한번만 실행된다.
  • 실행 중 서블릿이 변경될 경우, 기존 서블릿을 파괴하고 init()로 새 서블릿을 생성한다.
  1. init()이 호출된 후 클라이언트의 요청에 따라서 service()메소드를 통해 요청에 대한 응답이 doGet()가 doPost()로 분기된다.
    이때 HttpServletRequest, HttpServletResponse 객체가 생성
  2. 요청에 응답한 후 destroy()메소드가 호출
  • init()과 마찬가지지로 한번만 실행

https://mangkyu.tistory.com/m/14

profile
음그래

0개의 댓글