[210530] MVC & Template Engine
MVC와 Template Engine
MVC
: Model, View, Controler
예전 JSP에서는 View에서 모든 걸 구현했다(Model1 방식)
요즘에는 역할을 나누는 걸 중요시 여기게 되었다.
따라서 View 같은 경우엔 화면에 보이는 부분을 다뤄야 한다.
그리고 Controler, Model -> 비지니스 로직이나 내부적으로 처리에 집중
우선 로직부터 살펴보자
Static과는 다르게 HTML(변환 후) 즉, 렌더링
을 거치게 된다.
#controller/HelloController
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-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name", name);
return "hello-template";
}
}
#resources/template/hello-template.html
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
Parameter를 받을 때 @RequestParam()
그리고 실행을 하고 localhost:8080/hello-mvc 로 접속을 하면
오류가 뜨게 되는데
2021-05-30 18:16:25.470 WARN 16576 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'name' for method parameter type String is not present]
이는 @RequestParam()
부분에서 발생
required 라는 옵션이 있는데 default 값이 true로 되어있다.
-> 한 마디로 무조건 넣어야 함, required = false로 하면 안넣어도 됨
기본이 true이기 때문에 값을 넘겨야 함
->localhost:8080/hello-mvc?name=spring!!
*Parameter정보 : 컨트롤 + P
정리하면
MVC & template 방식은
template 엔진을 MVC로 쪼개서 View 부분의 html을 좀 더 프로그래밍 한 것으로 렌더링 후, 렌더링이 된 html을 고객(클라이언트)에게 전달
Author And Source
이 문제에 관하여([210530] MVC & Template Engine), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@iseeu95/210530-MVC-Template-Engine저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)