
웹 요청(request)을 처리하고 응답(response)을 생성하는 서버측 컴포넌트 즉,
클라이언트의 요청을 처리하고 그 결과를 반환하는 기술
웹 서버가 동적인 페이지를 제공할 수 있도록 돕는다.
html을 사용하여 요청에 응답한다.
Java Thread를 이용하여 동작한다.
MVC 패턴에서 Controller로 이용된다.
HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.
UDP보다 처리 속도가 느리다.
HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.
서블릿은 서블릿 컨테이너에서 관리한다.
서블릿들의 생성, 실행, 파괴를 담당한다.
구현되어 있는 servlet 클래스의 규칙에 맞게 서블릿은 관리해주며 클라이언트에서 요청을 하면 컨테이너는 HttpServletRequest, HttpServletResponse 두 객체를 생성하며 GET,POST여부에 따라 동적인 페이지를 생성하여 응답을 보냅니다.
클라이언트의 요청(Request)을 받아주고 응답(Response)할 수 있게, 웹서버와 소켓으로 통신(ex)톰캣)
서블릿 컨테이너는 서블릿과 웹서버가 손쉽게 통신할 수 있게 해줌
서블릿 컨테이너는 서블릿의 탄생과 죽음을 관리합니다. 서블릿이 생명을 다 한 순간에는 적절하게 Garbage Collection(가비지 컬렉션)까지 진행하여 편의를 제공함.
멀티쓰레드 지원 및 관리
선언적인 보안 관리
서블릿 컨테이너를 사용하면 개발자는 보안에 관련된 내용을 서블릿 또는 자바 클래스에 구현해 놓지 않아도 됩니다.
Servlet Request, Servlet Response 객체를 생성합니다.
설정 파일을 참고하여 매핑할 Servlet을 확인합니다.
해당 서블릿 인스턴스 존재의 유무를 확인하여 없으면 init() 메소드(한번만 실행됨)를 호출하여 생성합니다.
Servlet Container에 스레드를 생성하고 service를 실행합니다.
응답을 처리하였으면 distory() 메소드를 실행하여(한번만 실행됨) Servlet Request, Servlet Response 객체를 소멸합니다. 서블릿 소멸 시 Garbage Collection(가비지 컬렉션)이 진행됩니다.
다양한 설정 방법(XML, Java Config, 어노테이션)을 제공하여, 개발자가 선호하는 방식으로 설정 가능.
Spring의 다른 모듈(Spring Security, Spring Data 등)과 쉽게 통합할 수 있어 기능 확장이 편하다.
외부 요청에 대해 스레드로 응답하기 때문에 프로세스로 응답하는 경우보다 가벼운 편이다.