MVC가 왜 필요한가요? 정적 컨텐츠를 사용하면 안되나요?
대다수의 웹 개발에서는 HTML을 그대로 주는 것이 아니라 서버에서 필요에 따라 프로그래밍 하여 동적으로 바꾸는 작업이 필요하다.
이런 작업을 원활하게 수행하기 위해서는 각각의 역할을 잘 나눌 필요가 있다. 이때 사용되는 것이 MVC!
다시 말해 정적컨텐츠는 파일을 그대로 웹브라우저로 전송하는 것이라면,
MVC는 서버에서 파일을 변형하여 내려주는 방식이다.
그렇다면 MVC란?
Model, View, Controller의 약자.
View는 화면을 그리는 역할만 수행하고,
Controller는 내부의 비지니스 로직이나 서버단의 일을 처리하며,
Model은 코드내의 데이터 집합을 전달해주는 역할만을 수행한다!
이런 구조를 MVC 구조라고 부른다.
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
위와 같이 짜여진 helo-template.html이 있다고 가정해보자.
@Controller
public class HelloController {
@GetMapping("hello-mvc")
//외부에서 파라미터를 받음
public String helloMvs(@RequestParam("name") String name, Model model){
model.addAttribute("name",name); //key와 name
return "hello-template"; //hello-template로 넘김
}
}
이렇듯 Controller를 사용하여 외부에서 받은 파라미터를 helo-template.html로 넘길 수 있다.
MVC는 spring에서 어떻게 동작이 되나요?
웹브라우저에서 요청을 받으면, 내장 톰켓 서버는 hello-mvc라는 입력을 스프링에 보낸다.
먼저 스프링 컨테이너 내부에서 hello-mvc 라는 Controller를 찾으면 return 값인 hello-template과 mapping 시켜준다!
이때 name이라는 key와 spring이라는 value가 입력된 Model이 전달되게 된다.
viewResolver라고 불리는 View와 관련된 연산을 처리해주는 해결자가 동작하여
hello-template에 해당하는 뷰를 찾아서 template을 연결시켜준다.
이후 템플릿엔진이 렌더링을 하여 변환한 html을 웹브라우저에 반환한다.
해당 게시글은 인프런 - 김영한 님의
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의에 기반합니다
'Programming > Spring' 카테고리의 다른 글
[Spring/스프링] 롤링페이퍼(게시판) 프로젝트 0. 프로젝트 설명 (0) | 2022.03.22 |
---|---|
[Spring/스프링] AOP(Aspect Oriented Programming) 이해하기 (0) | 2022.03.06 |
[Spring/스프링] Persistence Layer를 위한 JDBC, JPA (0) | 2022.03.06 |
[Spring/스프링] API (Application Programming Interface) (0) | 2022.02.26 |
[Spring/스프링] 정적 컨텐츠 (Static Content) (0) | 2022.02.26 |