MVC와 템플릿 엔진
서버에서 변형해서 전달하는 방식
MVC: model, controll, view
view = 화면에 관련된 것들
controller, model = 비지니스적이고 서버관련된 것들을 넘겨주는 것들
controller
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") // url에서 /hello가 들어오면 아래 코드 실행
public String hello(Model model){ //MVC모델의 model
model.addAttribute("data", "hello!!");
return "hello";
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name",name);
return "hello-templates";
}
}
templates
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>
hello
</title>
<meta http-equiv="Content-Type" content="text/html; charset= UTF-8">
</head>
<body>
<p th:text="'hello. ' + ${name}"> hello. empty</p>
</body>
</html>
API
//컨트롤러 안에 작성
@GetMapping("hello-string")
@ResponseBody // response body 내에 직접 넣어주겠다.
public String hellostring(@RequestParam("name") String name){ //API
return "hello" + name; //그냥 깡으로 문자만 날라감
}
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){ //json 객체 반환
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello{ //Hello 라는 객체 만들기
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}