(Spring) Servlet & DispatcherServlet 개념

2024. 10. 14. 21:07·Spring

1. Servlet

1.1 정의

Servlet은 자바를 사용하여 동적으로 웹 페이지를 생성하는 서버 측 프로그램입니다. 웹 애플리케이션의 핵심 구성 요소로, 클라이언트의 요청에 따라 동적으로 HTML이나 XML을 생성하고 이를 응답으로 반환합니다.

1.2 동작 원리

Servlet의 동작 과정

  1. 클라이언트 요청 : 사용자가 웹 브라우저를 통해 HTTP 요청을 보냄
  2. Servlet 컨테이너 : 요청을 받은 Servlet 컨테이너(예: Tomcat)는 HttpServletRequest와 HttpServletResponse 객체를 생성
    • HttpServletRequest : 클라이언트의 요청 정보를 담고 있는 객체
    • HttpServletResponse : 서버의 응답 정보를 담고 있는 객체
  3. Servlet 찾기 : 요청된 URL에 따라 적절한 Servlet을 찾습니다.
  4. 서비스 메서드 호출 : 해당 Servlet의 service() 메서드를 호출. 이 메서드는 요청 방식(GET, POST 등)에 따라 각각의 메서드를 호출합니다.
    • doGet() : GET 요청을 처리
    • doPost() : POST 요청을 처리
  5. 응답 생성 : 요청을 처리한 결과를 HttpServletResponse 객체에 담아 클라이언트에 응답
  6. 객체 소멸 : 요청이 완료되면 생성된 HttpServletRequest와 HttpServletResponse 객체는 소멸

1.3 장점

  • 재사용성 : Servlet은 다양한 웹 애플리케이션에서 재사용이 가능
  • 세션 관리 : 사용자의 상태를 유지할 수 있는 세션 관리 기능을 제공
  • 확장성 : 다양한 기능을 추가하여 웹 애플리케이션을 확장

1.4 예제 코드

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

2. DispatcherServlet

2.1 정의

DispatcherServlet은 Spring 프레임워크의 핵심 구성 요소로, 요청을 처리하기 위해 Controller를 찾아서 연결해주는 역할을 합니다. 요청에 대한 처리를 중앙 집중화하여 관리함으로써 개발자가 요청 처리 흐름을 보다 쉽게 관리할 수 있게 합니다.

2.2 동작 원리

DispatcherServlet의 동작 과정

  1. 클라이언트 요청 : 사용자가 HTTP 요청을 보냄.
  2. DispatcherServlet 수신 : 요청이 DispatcherServlet에 도달함.
  3. Handler Mapping : DispatcherServlet은 요청 URL을 기반으로 적절한 Controller를 찾기 위해 Handler Mapping을 수행.
  4. Controller 호출 : 찾은 Controller의 메서드를 호출하여 요청을 처리함.
  5. 모델과 뷰 설정 : Controller는 처리 결과를 모델에 담고, 어떤 뷰를 사용할지 설정
  6. 뷰 리졸버 : DispatcherServlet은 뷰 리졸버를 통해 지정된 뷰를 찾고, 클라이언트에 응답함.

2.3 장점

  • 요청 처리의 분리 : 비즈니스 로직과 요청 처리를 분리하여 코드의 가독성을 높입니다.
  • 유연한 확장 : 다양한 타입의 요청을 쉽게 처리할 수 있도록 설계되어 있습니다.
  • 플러그형 아키텍처 : Spring의 다양한 기능(예: AOP, Transaction Management)을 쉽게 통합할 수 있습니다.

2.4 예제 코드

@Controller
public class HelloController {
    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "hello"; // hello.jsp로 포워딩
    }
}

3. 정리 & TIP

Servlet과 DispatcherServlet은 웹 애플리케이션의 요청 처리를 위한 중요한 구성 요소입니다.

Servlet은 자바 기반의 서버 측 프로그래밍을 가능하게 하며, DispatcherServlet은 Spring 프레임워크에서 요청을 효율적으로 관리하고 처리하는 역할을 합니다. 이 둘을 적절히 활용하면 보다 효율적이고 유지 보수가 쉬운 웹 애플리케이션을 개발할 수 있습니다.

 

▶ TIP

  • Servlet의 URL 매핑과 DispatcherServlet의 URL 매핑은 별도로 관리해야 하며, Spring에서는 @RequestMapping 또는 @GetMapping, @PostMapping 어노테이션을 통해 매핑을 처리할 수 있습니다.
  • DispatcherServlet의 Handler Mapping을 적절히 설정하여, RESTful API 설계에 맞는 URL 패턴을 정의하는 것이 좋습니다. 이를 통해 애플리케이션의 확장성과 가독성을 높일 수 있습니다.
저작자표시 비영리 변경금지 (새창열림)

'Spring' 카테고리의 다른 글

(Spring) Controller & RestController란 무엇인가  (1) 2024.10.23
(Spring) DI와 IOC 이해하기  (0) 2024.10.18
(Spring) MVC와 Spring MVC  (0) 2024.10.11
(Spring) Lombok & Application Properties  (0) 2024.10.07
(Spring) 테스트 코드 작성  (0) 2024.10.02
'Spring' 카테고리의 다른 글
  • (Spring) Controller & RestController란 무엇인가
  • (Spring) DI와 IOC 이해하기
  • (Spring) MVC와 Spring MVC
  • (Spring) Lombok & Application Properties
lastdove
lastdove
lastdove 님의 블로그 입니다.
  • lastdove
    lastdove 님의 블로그
    lastdove
  • 전체
    오늘
    어제
    • 분류 전체보기 (80)
      • Spring (16)
      • JAVA (17)
      • JAVA 알고리즘 (20)
      • Project (5)
      • SQL 문제풀이 (17)
      • Git&Linux (2)
      • Web development(입문) (2)
      • Sparta (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
lastdove
(Spring) Servlet & DispatcherServlet 개념
상단으로

티스토리툴바