[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 6강
https://inf.run/hisy 강의를 수강하고 작성하는 게시물입니다.
1. MVC(Model View Controler)와 템플릿 엔진
모델1에서는 컨트롤러와 뷰를 분류하지 않고 뷰에서 모든걸 다했다.
요즘은 컨트롤러와 뷰의 역할을 분류 했다.
뷰는 화면을 그리는 역할 컨트롤러는 그 외의 내부 처리하는 역할을 다 한다.(모델에 담아 화면에 넘겨주는 역할)
1.1 컨트롤러 예제
전에 작업하던 controller파일의 HelloController.java를 아래와 같이 수정한다(내용 추가 한다.)
package Hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
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(name = "name", required = false) String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
return 을 위해 resource - templates 아래에
hello-template.html파일을 아래와 같이 만든다.
<html xmlns:th="http://www.thymleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
꺾은 괄호 사이의 글자는 html에서 그냥 보여진다.
서버에서 ${name}에 내용이 들어가면 내용이 치환된다.
모델의 키값으로 가져온다.
http://localhost:8080/hello-mvc
위는 name변수를 안주는 방법(hello null이라고 나온다)
http://localhost:8080/hello-mvc?name=spring
위의 주소는 name을 주었다. 내용이 바뀌는 것을 확인하면 좋을것이다.(hello spring이라고 나온다.)
1.2. 대략적인 정리
- 웹 브라우저에서 주소를 받으면 스프링 부트의 내장 톰켓 서버를 거쳐 스프링에게 던진다.
- 스프잉은 helloController에 매핑이 되어있는것을 확인 후 호출해준다
- return할때 값을 스프링에게 넘긴다
- 스프링이 viewResolver를 동작시킨다(후에 강의 예정)
- 변환한 HTML을 웹 브라우저에 넘긴다.
댓글 남기기