MVC란 Model-View-Controller 의 약자
소프트웨어 디자인 패턴 중 하나

🕹️ MVC 패턴은 코드의 재사용성과 유지보수성을 높이고, 개발자들 간의 협업을 용이하게 해줌.
Spring에서 MVC 디자인 패턴을 적용하여 HTTP 요청을 효율적으로 처리하고 있다’
DispatcherServlet이란?
-> Servlet은 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말함.

/동작/
요청에 매칭되는 Servlet에 대한 정보가 web.xml에 담겨있음
Servlet은 설정된 정보를 통해 어떤 Servlet에 대한 요청인지 찾음.
찾은 Servlet에서 해당 서비스 method를 호출함
HTTP요청이 어떤 메서드 방식인 지 확인함
(Http요청은 처음 HttpServletRequest에 담겨있음)

Dispatcher 뭔가 전달하는 서블릿
client에서 http요청이 들어오면 DispatcherServlet객체가 요청을 분석함
DispatcherServlet 객체는 분석한 데이터를 토대로 Handler mapping을 통해 Controller를 찾아 요청을 전달해줌.
[Sample]
💡 GET /api/hello → HelloController 의 hello() 함수
💡 GET /user/login → UserController 의 login() 함수
💡 GET /user/signup → UserController 의 signup() 함수
💡 POST /user/signup → UserController 의 registerUser() 함수
@RestController
public class HelloController {
@GetMapping("/api/hello")
public String hello() {
return "Hello World!";
}
}
- URL은
@GetMapping("/api/hello")이처럼 해당 애너테이션의 속성값으로 전달해주면 됩니다.- 해당 메서드명은 URL을 매핑하는데 영향을 미치지 않음으로 자유롭게 정해도 상관 없습니다.
-> 이제는 직접 Servlet을 구현하지 않아도 DispatcherServlet에 의해 간편하게 HTTP 요청을 처리할 수 있음
Controller → DispathcerServlet
: 해당 Controller는 요청에 대한 처리를 완료 후 처리에 대한 결과 즉, 데이터('Model')와 'View' 정보를 전달합니다
DispatcherServlet → Client
: ViewResolver 통해 View에 Model을 적용하여 View를 Client에게 응답으로 전달합니다.