| 구분 | 기존 MVC 패턴 | Spring MVC |
|---|---|---|
| 설계 방식 | 서블릿 + JSP 조합 | DispatcherServlet 기반 프레임워크 |
| 컨트롤러 역할 | 서블릿이 직접 요청을 처리 | DispatcherServlet이 컨트롤러로 전달 |
| 요청 매핑 | web.xml에서 URL 매핑 | @RequestMapping, @GetMapping 등 사용 |
| 의존성 관리 | 직접 객체 생성 및 사용 | DI(의존성 주입)으로 객체 관리 |
| 모델 데이터 전달 | request.setAttribute()사용 | Model 객체 사용 |
| 뷰 처리 | JSP 사용 | Thymeleaf, JSON 등 다양한 뷰 지원 |
| 테스트 용이성 | 의존성이 높아 단위 테스트 어려움 | IoC로 객체 관리, 테스트 용이 |

/hello 요청을 보내면, "Hello Spring MVC 메시지를 반환하게 간단히 구현해보자
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model){
model.addAttribute("message","Hello Spring MVC");
return "hello";
}
}
<body>
<h1 th:text="${message}">Hello Spring MVC!</h1>
</body>
💻 http://localhost:8080/hello 요청 결과
Hello Spring MVC
<@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public Map<String, String> hello(){
return Map.of("message","Hello Spring MVC");
}
}
💻 http://localhost:8080/api/hello 요청 결과
{"message":"Hello Spring MVC"}