[JSP] 12. 서블릿(Servlet)

Min's Study Note·2023년 11월 28일
0

JSP

목록 보기
14/16

▣ 서블릿이란..??

  • 서블릿(Servlet)은 JSP가 나오기 전, 자바로 웹 애플리케이션을 개발할 수 있도록 만든 기술
  • 서블릿은 서버 단에서 클라이언트의 요청을 받아 처리한 후 응답하는 역할을 함
  • 서블릿의 특징
    - 클라이언트의 요청에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트
    - MVC 모델에서 컨트롤러Controller 역할
    - 모든 메서드는 스레드로 동작됩니다.
    - jakarta.servlet.http 패키지의 HttpServlet 클래스를 상속

▣ 서블릿 컨테이너

  • 서블릿을 관리하는 컨테이너로 톰캣(Tomcat)을 사용
  • 서블릿의 수명주기를 관리하고, 요청이 오면 스레드를 생성해 처리해줌
    ▣ 서블릿 컨테이너의 역할
  • 통신 지원 : 특정 포트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( ) 메서드를 오버라이딩
  • 와일드카드(*)를 사용하여 여러 가지 요청을 하나의 서블릿에서 처리하도록 매핑할 수 있음
  • 수명주기 메서드에서 확인했듯이 두 번째 요청부터는 첫 번째 요청 때 만들어둔 객체를 재사용하므로처리 속도가 빨라짐

0개의 댓글

관련 채용 정보