24.11.13 TIL Spring MVC

신성훈·2024년 11월 13일
0

TIL

목록 보기
77/162

1. Spring MVC란?

Spring MVC는 Spring 프레임워크의 웹 애플리케이션 모듈로, MVC 아키텍처를 구현하기 쉽게 도와줍니다. 기본 MVC 패턴처럼 Model, View, Controller 의 역할을 나누어 각각의 기능을 담당하고, 이를 바탕으로 클라이언트의 요청을 처리하고 응답을 생성합니다.


2. Spring MVC의 주요 구성 요소

Spring MVC에서는 MVC 패턴을 구현하기 위해 몇 가지 주요 구성 요소가 사용됩니다:

1) DispatcherServlet

DispatcherServlet은 Spring MVC에서 가장 핵심이 되는 클래스입니다. 모든 HTTP 요청을 받아 Controller로 전달하고, 처리된 결과를 View로 전달해주는 중앙 관리자로 볼 수 있습니다. 요청이 들어오면 DispatcherServlet이 적절한 Controller를 찾아주는 역할을 합니다.

2) Controller

Controller는 클라이언트의 요청을 받아 필요한 작업을 수행하고, Model과 View를 통해 응답을 준비하는 역할을 합니다. Spring MVC에서는 @Controller 또는 @RestController 어노테이션을 사용해 Controller를 정의할 수 있습니다.

  • @Controller: 일반적인 MVC에서 View를 반환할 때 사용합니다.
  • @RestController: JSON, XML과 같은 데이터를 직접 반환할 때 사용합니다. @Controller@ResponseBody가 결합된 형태라고 생각하면 됩니다.

Controller 예제

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home(Model model) {
        model.addAttribute("message", "Welcome to Spring MVC!");
        return "home"; // View 이름
    }
}

위 예제에서 /home 경로로 GET 요청이 들어오면 home 메서드가 실행되고, View로 이동합니다.

3) Model

Model은 애플리케이션의 데이터를 관리합니다. Controller에서 Model을 통해 데이터를 View에 전달할 수 있습니다. Model에 데이터를 저장하면, Spring MVC가 자동으로 이를 View로 전달해 줍니다.

  • ModelAndView: 데이터를 저장하고, 이동할 View 이름을 설정할 수 있는 객체입니다.
  • Model: 데이터를 담아서 View에 전달하는 객체입니다.
public String home(Model model) {
    model.addAttribute("name", "Spring MVC");
    return "home";
}

4) View

View는 클라이언트에게 데이터를 시각적으로 보여주는 부분입니다. Spring에서는 JSP, Thymeleaf, Freemarker 등을 사용할 수 있습니다. Controller에서 넘겨준 데이터를 View가 받아 사용자에게 표시합니다.


3. Spring MVC 동작 흐름

  1. 클라이언트 요청: 사용자가 웹 애플리케이션에 요청을 보냅니다. (예: /home).
  2. DispatcherServlet이 요청 수신: DispatcherServlet이 요청을 받고, 어떤 Controller가 이 요청을 처리할지 찾아냅니다.
  3. Controller 처리: 요청을 처리할 Controller가 비즈니스 로직을 실행하고 Model을 통해 데이터를 준비한 후, View 이름을 DispatcherServlet에 반환합니다.
  4. View Resolver: View 이름을 받아서 실제 View 파일을 찾습니다 (예: home.jsp).
  5. View 렌더링: View가 렌더링되고, HTML이 사용자에게 응답으로 전송됩니다.

4. Spring MVC의 장점과 단점

장점

  • 간편한 설정
  • 유지보수성
  • 확장성

단점

  • 비교적 무거운 구조

5. 마무리

Spring MVC는 큰 웹 애플리케이션을 구조적으로 개발할 때 아주 유용한 도구입니다. 특히 Spring Boot와 결합하면 설정이 더 간편해져 빠르게 개발할 수 있는 장점이 있습니다.

profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글