Servlet & Spring Web MVC

·2025년 1월 27일

필수영상

목록 보기
18/40

[10분 테코톡] 🌻타미의 Servlet vs Spring

Servlet

웹 애플리케이션을 만들 때 필요한 인터페이스

동작방식

  1. 클라이언트(브라우저)가 HTTP 요청을 보냄.
  2. 웹 서버(Tomcat)가 요청을 서블릿 컨테이너로 전달.
  3. 서블릿 컨테이너가 해당 요청을 처리할 서블릿 객체를 생성하거나 실행.
  4. 서블릿이 요청을 처리한 후, HTTP 응답을 생성하여 클라이언트에게 반환.

📌 Servlet 예제

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

✔ 실행 흐름
/hello 경로로 HTTP 요청이 오면 doGet() 메서드가 실행되고, response.getWriter().println()을 사용해서 응답을 생성

Servlet의 한계

  • 비즈니스 로직과 UI 코드가 혼재됨 → 유지보수가 어렵다.
  • 의존성 관리가 불편 → 객체를 직접 생성해야 한다.
  • 중복 코드 증가 → 같은 기능을 여러 Servlet에서 반복적으로 구현해야 한다.
  • 클라이언트 요청을 직접 처리해야 함 → doGet(), doPost()를 직접 관리해야 하므로 코드가 복잡해짐.

→ 이러한 문제를 해결하기 위해 등장한 것이 Spring Web MVC!

Spring Web MVC (Spring 기반의 웹 프레임워크)

Servlet을 기반으로 한 MVC(Model-View-Controller) 아키텍처를 제공하는 프레임워크.
개발자가 직접 요청과 응답을 관리하는 것이 아니라 Spring이 이를 자동으로 처리해서 더 간결하고 유지보수하기 쉽게 만들어준다.

Spring Web MVC는 DispatcherServlet을 중심으로 동작한다.

✔ 요청 흐름
1. 클라이언트가 HTTP 요청을 보냄.
2. DispatcherServlet이 요청을 받아 적절한 Controller로 전달.
3. Controller에서 요청을 처리한 후 Service Layer를 호출하여 비즈니스 로직을 수행.
4. 서비스에서 데이터를 가공한 후에 View Resolver를 통해 적절한 View(JSP, Thymeleaf 등)를 선택.
5. 응답을 생성해서 클라이언트에게 반환.

📌 Spring Web MVC 예제

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring MVC!";
    }
}
✔ 실행 흐름:

/api/hello 경로로 요청이 들어오면 sayHello() 메서드 실행.
"Hello, Spring MVC!" 문자열을 반환.

Spring Web MVC를 사용하는 이유

✅ Servlet보다 유지보수가 쉬움
비즈니스 로직, 데이터 처리, UI가 분리되어 있어 코드 관리가 편리하다.

✅ Spring이 객체 생성을 관리 (IoC, DI)
Servlet에서는 객체를 직접 생성해야 하지만 Spring에서는 의존성 주입(DI)을 통해 자동으로 객체를 관리할 수 있음

✅ Spring Boot를 사용하면 Servlet 설정 없이 쉽게 웹 애플리케이션을 개발할 수 있다.

✅ 보안, 트랜잭션 관리 등 다양한 기능을 쉽게 적용
Spring Security를 통해 로그인, 인증, 권한 관리 기능을 쉽게 추가할 수 있다.
Spring Transaction을 통해 데이터베이스 트랜잭션을 간편하게 관리할 수 있다.

0개의 댓글