자바를 사용해 웹페이지를 동적으로 생성하는 서버측 프로그램
자바 클래스의 일종으로 웹 서버의 성능을 향상시킨다.
JSP와 유사하지만 JSP는 HTML 안에 Java코드가 있고, 서블릿은 그 반대로 Java코드 안에 HTML을 포함한다.
- 동적으로 작동하는 웹 어플리케이션 컴포넌트
- 응답에 html을 사용
- Java Thread를 이용하여 동작한다.
- MVC 패턴에서 Controller이다.
- javax.servlet.http.HttpServlet 클래스를 상속받는다.
- UDP보다 처리 속도가 느리다.
- HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.
- 서블릿을 관리해주는 컨테이너. 대표적으로 톰캣
- 클라이언트 요청을 받으면 HttpServletRequest, HttpSevletReponse 객체를 생성해 응답한다.
- 생명주기(LifeCycle)을 관리한다.
- 웹 서버와의 통신을 지원함으로써 개발자를 돕는다.
- 서블릿 생명주기를 통해 쓰레드를 생성, 소멸시켜 관리해준다.
- 선언적인 보안관리를 통해 보안 관련된 기능을 지원한다.
- 요청을 받고 Servlet Request, Servlet Response 객체를 생성
- 매핑할 Servlet을 확인(없을경우 init을 통해 생성)
- Servlet Container에 쓰레드를 생성하고 service를 실행
- 응답 처리 후 distory로 Servlet Request, Servlet Response를 소멸
- 요청이 들어오면 컨테이너는 해당 서블릿이 메모리에 있는지 확인하고,
- 없을 경우 init()메서드를 호출한다.
- init()메서드는 처음 한번만 실행된다.
- 실행 중 서블릿이 변경될 경우, 기존 서블릿을 파괴하고 init()로 새 서블릿을 생성한다.
- init()이 호출된 후 클라이언트의 요청에 따라서 service()메소드를 통해 요청에 대한 응답이 doGet()가 doPost()로 분기된다.
이때 HttpServletRequest, HttpServletResponse 객체가 생성- 요청에 응답한 후 destroy()메소드가 호출
- init()과 마찬가지지로 한번만 실행