Back_End/JAVA

Servlet과 Dispatcher Servlet 란?

10Biliion 2024. 11. 29. 10:40

Servlet이란?

Servlet은 자바 기반 웹 애플리케이션의 핵심 구성 요소 중 하나로, 클라이언트의 요청(request)을 처리하고 응답(response)을 생성하는 역할을 합니다.

Servlet의 주요 특징

  • Java 클래스 기반: HttpServlet 클래스를 상속받아 동작.
  • 동적 콘텐츠 생성: HTML, JSON 등 다양한 콘텐츠 타입 생성 가능.
  • 서블릿 컨테이너: Tomcat과 같은 컨테이너에서 실행.

Servlet 동작 흐름

  1. 클라이언트 요청: 사용자가 웹 브라우저에서 URL 입력.
  2. 요청 처리: 서블릿 컨테이너가 요청을 Servlet으로 전달.
  3. 응답 반환: Servlet이 응답 데이터를 생성하여 클라이언트로 반환.

간단한 Servlet 코드 예시

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<h1>Hello, Servlet!</h1>");
    }
}

위 코드는 "Hello, Servlet!" 메시지를 브라우저에 출력하는 간단한 Servlet입니다.


Dispatcher Servlet이란?

Dispatcher Servlet은 Spring Framework에서 사용되는 서블릿으로, Front Controller 패턴을 구현한 것입니다. 이 서블릿은 애플리케이션 전반에 걸친 요청을 중앙에서 처리하고, 적절한 컨트롤러로 전달하는 역할을 합니다.

Dispatcher Servlet의 주요 역할

  1. 요청 분배: 클라이언트 요청을 분석하여 적절한 핸들러(Controller)로 전달.
  2. 뷰 처리: 컨트롤러가 반환한 데이터를 기반으로 뷰(View) 렌더링.
  3. 유연성 제공: 다양한 요청/응답 처리 로직을 추가로 설정 가능.

Dispatcher Servlet 동작 흐름

  1. 클라이언트 요청: URL로 요청이 들어옴.
  2. Handler Mapping: 어떤 컨트롤러가 요청을 처리할지 매핑.
  3. 컨트롤러 실행: 매핑된 컨트롤러의 메서드 호출.
  4. 모델 반환: 컨트롤러에서 비즈니스 로직 수행 후 데이터 반환.
  5. 뷰 렌더링: 반환된 데이터를 기반으로 뷰 생성.

Dispatcher Servlet 구성 예시

Controller 코드

@Controller
public class HelloController {
    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, Dispatcher Servlet!");
        return "hello"; // hello.jsp 뷰로 매핑
    }
}

hello.jsp 뷰 파일

<html>
<body>
    <h1>${message}</h1>
</body>
</html>

Dispatcher Servlet이 "hello" 뷰를 렌더링하고, 컨트롤러에서 전달한 메시지를 화면에 표시합니다.


Servlet과 Dispatcher Servlet 비교

특징 ServletDispatcher Servlet
프레임워크 지원 여부 독립적 (Spring에 종속되지 않음) Spring Framework의 일부
요청 처리 요청 직접 처리 요청 분배 및 컨트롤러 호출
뷰 처리 직접 HTML 작성 또는 외부 템플릿 사용 Spring MVC와 연계하여 뷰 렌더링 처리
적용 가능한 패턴 단순 요청/응답 처리 MVC 패턴 기반 애플리케이션