통신 지원 : 특정 포트port로 소켓Socket을 열고 I/O 스트림을 생성하는 등 복잡한 과정을 간단히 처리
수명주기 관리 : 서블릿의 초기화, 요청처리, 가비지 컬렉션을 통해 객체를 소멸
멀티스레딩 관리 : 멀티스레드 방식으로 여러 요청을 동시에 처리
선언적인 보안 관리 및 JSP 지원 등
❶ 클라이언트의 요청을 분석
❷ 요청을 처리할 서블릿(Controller)으로 전달
❸ 비즈니스 서비스 로직 호출
❹ 모델(Model)로부터 그 결괏값 받음
❺ 결괏값을 출력할 적절한 뷰(View) 선택
❻ 출력하여 클라이언트에 응답
기본적으로 jakarta.servlet, jakarta.servlet.http, java.io 패키지를 임포트
서블릿 클래스는 반드시 public으로 선언해야 하고, HttpServlet을 상속
사용자의 요청을 처리하기 위해 doGet() 혹은 doPost() 를 반드시 오버라이딩
해당 메서드는 ServletException과 IOException 예외를 throws
또한 메서드를 호출할 때의 매개변수는 HttpServletRequest와 HttpServletResponse를 사용
▣ 서블릿의 수명주기 메서드
@PostConstruct
- 서블릿 생성 후 초기화 전 호출(전처리)
init()
- 서블릿 초기화 시 딱 한번 호출
service()
- 요청 처리를 위해 호출
- 요청 분석후 doGet() / doPost() 호출
destroy()
- 서버 종료시 호출됨
@PreDestroy
- 제일 마지막에 호출(후처리)
▣ 핵심요약
서블릿을 사용하면 MVC 패턴을 적용한 모델2 방식으로 웹 애플리케이션을 개발할 수 있음
요청명(요청 URL)과 이를 처리할 파일(서블릿)이 분리되어 있어서 둘을 매핑해야 함
요청명과의 매핑은 web.xml 혹은 @WebServlet 애너테이션을 이용하는 방식을 제공
서블릿은 HttpServlet 클래스를 상속받은 후 요청을 처리할 doGet( ) 혹은 doPost( ) 메서드를 오버라이딩
와일드카드(*)를 사용하여 여러 가지 요청을 하나의 서블릿에서 처리하도록 매핑할 수 있음
수명주기 메서드에서 확인했듯이 두 번째 요청부터는 첫 번째 요청 때 만들어둔 객체를 재사용하므로처리 속도가 빨라짐