inblog logo
|
vosw1
    Spring

    Dispatcher-Servlet

    Jan 26, 2024
    Dispatcher-Servlet

    1. Dispatcher-Servlet(디스패처 서블릿)이란?

    : HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 Controller에 위임
    = Front Controller
    클라이언트 : 요청 > Tomcat(톰캣)과 같은 Servlet Container가 요청을 받음
    > Dispatcher-Servlet이 가장 먼저 받아 공통적인 작업을 먼저 처리
    > 해당 요청을 처리해야 하는 Controller를 찾아서 작업을 위임
    Front Controller : Servlet Container 제일 앞에서 서버로 들어오는 모든 요청을 받아서 처리
     
    Servlet : 자바 언어를 기반으로 하는 서버 측 웹 애플리케이션 컴포넌트 동적인 웹 페이지를 생성하고 관리하는 데 사용
    Servlet Container : Servlet을 관리하고 실행하는 환경을 제공하는 소프트웨어 컴포넌트 Servlet을 실행하기 위한 런타임 환경을 제공 Servlet의 생명 주기를 관리 클라이언트 요청에 대한 응답을 생성

    2. 주요 기능

    • URL 매핑과 핸들러 매핑:
    URL 매핑을 통해 들어온 요청을 적절한 핸들러(컨트롤러)에게 매핑
    HandlerMapping이라는 빈(Bean)에 의해 수행
    • 핸들러 어댑터:
    다양한 핸들러 종류(컨트롤러 메서드, 커맨드 객체 등)에 대한 호출을 표준화
    다양한 리턴 타입을 처리하기 위해 핸들러 어댑터를 사용
    • 뷰 리졸버:
    핸들러가 처리한 결과를 어떤 뷰로 보여줄지 결정하는 역할
    ViewResolver 라는 빈을 통해 등록
    주로 JSP, Thymeleaf, FreeMarker 등의 뷰 템플릿 엔진과의 통합을 담당
    • 인터셉터 (Interceptor)
    핸들러의 실행 전, 후 또는 응답 전에 인터셉터를 실행할 수 있음
    특정 로직을 삽입하여 요청 처리를 보조하거나 수정 가능
    • 데이터 바인딩과 포매터 (Data Binding and Formatters)
    데이터 바인딩 : 사용자의 요청 파라미터를 자바 객체로 변환하거나,
    자바 객체를 응답으로 변환하는 작업
    스프링은 이를 지원하며, 포매터를 사용하여 특정한 형식으로 데이터를 변환 가능
    • 뷰 리졸버 체인과 핸들러 어댑터 체인
    여러 개의 뷰 리졸버나 핸들러 어댑터가 등록될 수 있으며, 체인 형태로 동작
    이를 통해 여러 리졸버나 어댑터 간의 협력이 가능
    • Multipart 요청 처리
    파일 업로드와 같은 멀티파트 요청을 처리하기 위한 기능을 제공
    • 에러 처리
    예외가 발생했을 때 적절한 에러 페이지로 리다이렉트하거나 처리하기 위한 기능을 제공
    • Flash 속성
    리다이렉트 이후에도 데이터를 유지할 수 있도록 Flash 속성을 지원
    • 동시성 처리
    비동기적인 처리를 지원하고, 서블릿 3.0+에서 제공되는 비동기 서블릿 기능 활용 가능
     

    3. 장점

    • web.xml의 역할을 상당히 축소
    과거) 모든 Servlet 을 URL 매핑을 위해 web.xml에 모두 등록!
    dispatcher-servlet) 들어오는 모든 요청을 Handling해주고 
    공통 작업을 처리면서 상당히 편리하게 이용
    ⇒ Controller를 구현하면

    dispatcher-servlet이 알아서 적합한 Controller로 위임

     
    핸들링(Handling) : 요청을 받아서 적절한 처리를 하는 것
     
    Spring MVC(모델-뷰-컨트롤러) : 자바 기반의 웹 애플리케이션을 개발하기 위한 프레임워크 중 하나 Spring Framework의 일부 웹 애플리케이션에서 모델, 뷰, 컨트롤러 컴포넌트를 사용하여 구조화된 개발을 도와줌 유연성, 확장성 및 테스트 용이성 강조 대규모 웹 애플리케이션의 개발에 매우 효과적
     
    모델(Model) : 애플리케이션의 데이터와 비즈니스 로직을 담당
    애플리케이션의 상태와 동작을 표현
    컨트롤러와 뷰 사이에서 데이터를 전달하는 역할
    뷰(View) : 사용자에게 보여지는 부분
    모델의 데이터를 기반으로 화면을 생성
    일반적으로 템플릿 엔진을 사용하여 동적인 웹 페이지를 생성
    컨트롤러(Controller) : 사용자의 요청을 처리
    모델을 업데이트
    적절한 뷰를 선택하여 응답을 생성
    웹 요청과 모델 간의 중개자 역할을 수행
     
    특정한 인터페이스를 구현할 필요 없음 어댑터가 컨트롤러의 메서드를 호출할 수 있도록 컨트롤러와의 통신을 중개
    각각의 컨트롤러는 핸들러 어댑터와의 호환성을 유지하기 특정 메서드들을 가짐
    <대표적인 어댑터의 종류>
    • SimpleControllerHandlerAdapter
    : Controller 인터페이스를 구현한 컨트롤러를 처리
    • HttpRequestHandlerAdapter
    : HttpRequestHandler 인터페이스를 구현한 컨트롤러를 처리
    • AnnotationMethodHandlerAdapter
    : 주로 @RequestMapping을 사용하여 매핑된 메서드를 처리
    • RequestMappingHandlerAdapter
    : @RequestMapping을 사용하는 데 추가로 HandlerMapping과 HandlerMethodReturnValueHandler 등을 사용하여 메서드를 처리
     
    Interceptor(인터셉터) : Spring MVC에서 클라이언트의 요청을 가로채거나, 컨트롤러의 실행 전후에 특정한 로직을 수행할 수 있도록 하는 기능
    Proxy Server
    Proxy Server
    Share article

    vosw1

    RSS·Powered by Inblog