
Spring MVC란?
Spring MVC는 웹 요청을 받아서, 자바 코드로 처리하고, 그 결과를 화면이나 JSON으로 돌려주는 Spring의 웹 기술이다.
- Model: 데이터를 담는 부분으로, 화면에 보여줄 값이다.
- 회원 정보
- 게시글 목록
- 상품 정보
- View: 사용자에게 보이는 화면으로, 결과물을 보여주는 부분이다.
- HTML 페이지
- 템플릿 화면
- Controller: 요청을 받아서 처리하는 자바 코드로, 중간에서 일을 처리하는 부분이다.
/login요청 처리/products요청 처리- 데이터 조회 후 화면으로 넘기기
Spring MVC의 동작 흐름
- 사용자가 URL로 요청을 보냄
- Spring MVC가 그 요청을 받음
- 어떤 Controller가 처리할지 찾음
- Controller가 필요한 작업을 수행함
- 데이터를 화면에 넘기거나 JSON으로 반환함
- 최종 결과를 사용자에게 응답함
Controller 코드 예시
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "안녕하세요");
return "hello";
}
}
@Controller: 이 클래스가 웹 요청을 처리한다는 뜻이다.@GetMapping("/hello"):/hello주소로 들어오면 이 메서드가 실행된다.model.addAttribute("message", "안녕하세요"): 화면에 넘길 데이터를 담는다.return "hello":hello.html같은 화면 파일을 찾아서 보여주라는 뜻이다.
위 예제를 MVC로 나누면 이렇게 볼 수 있다.
- Controller:
HelloController→ 요청을 처리 - Model:
message = "안녕하세요"→ 데이터를 담음 - View:
hello.html→ 화면에 보여줌
@Controller와 @RestController 차이
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home";
}
}
@RestController
public class ApiController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
@Controller: 보통 HTML 화면을 보여줄 때 많이 사용 → 웹사이트 화면 중심에서 주로 사용@RestController: 보통 JSON API를 만들 때 사용 → 프론트엔드나 앱이 가져갈 API에서 주로 사용
위의 예제 코드에서 @Controller는 home.html라는 파일을 찾아 반환하지만, @RestController는 "hello"라는 문자열을 반환한다.
Spring MVC의 핵심 구성
| 이름 | 설명 | 예시 |
| DispatcherServlet | ▪ 모든 요청을 먼저 받아서 정리해주는 중심 역할 ▪ 사용자의 요청이 들어오면 먼저 여기서 받고, 어느 Controller로 보낼지 정해주는 기능을 수행한다. |
▪ 요청 받기 ▪ 처리 담당 찾기 ▪ 결과 정리 ▪ 응답 보내기 |
| Controller | 실제로 요청을 처리하는 자바 코드 | ▪ 로그인 처리 ▪ 게시글 목록 조회 ▪ 회원가입 처리 |
| Model | 화면에 넘길 데이터를 담는다. | ▪ 사용자 이름 ▪ 게시글 제목 ▪ 상품 가격 |
| View | 사용자에게 보여지는 최종 화면 | ▪ Thymeleaf HTML ▪ JSP |
Spring MVC로 할 수 있는 것
| 화면 반환 | 데이터 처리 | 응답 처리 |
|
|
|
왜 많이 사용할까?
- 명확한 역할 분리: 비즈니스 로직(Model)과 화면(View)이 철저히 분리되어 있어, 디자이너/퍼블리셔와 개발자가 협업하기 좋다.
- 유연성과 확장성:
ViewResolver,HandlerMapping등 다양한 컴포넌트들을 인터페이스로 제공하므로, 필요에 따라 쉽게 커스터마이징하거나 교체할 수 있다. - 강력한 어노테이션 기반 설정:
@Controller,@RequestMapping,@GetMapping등의 어노테이션을 사용하여 매우 직관적이고 적은 코드로 웹 라우팅과 설정을 할 수 있다. - Spring 생태계와의 완벽한 통합: Spring의 핵심 기능인 의존성 주입(DI)이나 관점 지향 프로그래밍(AOP), 보안(Spring Security) 등과 매우 자연스럽게 연동된다.
Spring과 Spring MVC와 Spring Boot의 관계
- Spring: 전체 큰 프레임워크 (본체)
- Spring MVC: Spring 안에 들어 있는 웹 기능
- Spring Boot: Spring 프로젝트를 쉽게 시작하게 해주는 도구
'프레임워크 > Spring' 카테고리의 다른 글
| [Spring] JPA와 H2 DB (0) | 2026.03.10 |
|---|---|
| [Spring Boot] Spring CRUD 구현 - Day 1 (0) | 2026.03.10 |
| [Spring Boot] 오목 게임 만들기 - Day 2 (0) | 2026.02.23 |
| [Spring Boot] 오목 게임 만들기 - Day 1 (0) | 2026.02.21 |
| [Spring Boot] EC2 배포 가이드 (Backend & DB) (0) | 2025.11.25 |