Back-End/Spring

[SpringBoot][스프링 입문] - 2.2 MVC와 템플릿 엔진

얄루몬 2021. 12. 21. 15:35

2. 스프링 웹 개발 기초

2.2 MVC와 템플릿 엔진

 

 

1. MVC: Model, View, Controller 이들을 세가지로 나누는 이유는? 

유지보수를 조금 더 편하게 하려고 모델 뷰 컨트롤러로 나누고 모델과 컨트롤러는 또 비지니스 로직으로 뷰는 뷰를 위한 그림그리기 작업을 집중적으로 진행한다.

 

2. MVC, 템플릿 엔진 사용 예시

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value = "name") String name, Model model){
        model.addAttribute("name",name);
        return "hello-template";
    }
//코드 일부만 가져온 것임
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
<!--html을 그대로 쓰고 서버 없이 봐도 껍데기를 볼 수 있는것이 타임리프의 장점이다.
hello! empty는 안 써도 되는데 마크업 할 때 사용하기 때문이고 서버를 이용해서 열면 안 보이는 내용임-->
</body>
</html>

 

 

3. 템플릿 엔진 이미지(위의 설명)

  • 스프링부트를 띄울 때 같이 띄우는 내장 톰켓서버를 먼저 거치고 스프링에게 전해준다.
  • 스프링부트는 MVC가 왔다고 받고 helloController에 저 메소드가 매핑이 되어 있는 것을 확인한 뒤 그 메소드를 호출해준다.
  • 이때 리턴을 해줄 hello-template으로 넘겨주고 모델 안에는 키는: name 값:spring를 스프링에 넘겨 보낸다.
  • viewResolver는 템플릿 엔진을 연결해주고 처리해주는 것을(간단하게만 이해) 의미한다. 
  • 여기서 정적 콘텐츠의 경우엔 HTML 변환을 하지 않고 보내고 MVC, 템플릿 엔진을 사용할 땐 HTML을 변환해서 웹브라우저에 전달하는 차이를 볼 수 있다.