[스프링] MVC와 템플릿 엔진

sewonK·2021년 9월 12일
0

MVC란?

Model, View, Controller

💡 MVC 패턴

  1. 사용자의 Request를 Controller가 받는다.

  2. Controller는 Business Logic을 처리를 Service와 같이 처리한 후 결과를 Model에 담는다.

  3. Model에 저장된 결과를 바탕으로 시각처리를 담당하는 View를 제어하여 사용자에게 전달한다.

Controller
사용자가 접근 한 URL에 따라 요청을 파악한다. URL에 맞는 Method를 호출하여 Service와 함께 Business Logic을 처리한다. 최종적으로 나온 결과는 Model에 저장을 하고, View에 던져준다.

Model
Model은 Controller에서 받은 데이터를 저장하는 역할을 한다.

View
Controller로 부터 받은 Model 데이터를 바탕으로 사용자에게 표현해준다. 일반적으로 HTML, JSP... 에 해당한다.

💡 MVC 패턴 예시

예제 코드

package hello.hellospring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data", "hello!!");
        return "hello";
    }

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value = "name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }
}

Client에서 hello-mvc url을 호출하면, helloController에서 helloMvc 메서드를 호출한다. 모델에 @RequestParam으로 받은 name으로 name을 addAttribute해주고, hell-template를 return한다. return된 값은 viewResolver를 통해 HTML 변환 후 웹 브라우저에 보이게 된다.

Controller는 RequestMapping을 통해 URL을 확인하여 바로 View에 던져줄지, Service로 들어가 추가적인 Business Login을 할지 결정한다. 이렇게 역할을 나눔으로써 HTML과 Java를 분리하여 처리하기 때문에 확장성도 좋고 유연하며 유지보수도 하기 쉬워진다.

💡 ResponseBody 사용 시 MVC 모델 원리

@ResponseBody 를 사용하면

  • HTTP의 BODY에 문자 내용을 직접 반환
  • viewResolver 대신에 HttpMessageConverter 가 동작
  • 기본 문자처리: StringHttpMessageConverter
  • 기본 객체처리: MappingJackson2HttpMessageConverter
  • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음

[참고 출처]
https://aridom.tistory.com/61

0개의 댓글