🤗이 글은 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 김영한님 강의를 듣고 작성하였습니다.
그냥 파일을 그대로 내려준다.
브라우저에서 input
.html 을 요청받으면 톰켓 내장서버에서 static폴더 하위에 있는 input
.html 파일을 찾아 클라이언트로 전송한다.
템플릿 엔진을 모델 뷰 컨트롤러 방식으로 쪼개서 뷰를 템플릿 엔진으로 랜더링 된 html을 클라이언트에게 전달해 준다.
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
<html xmlns:th="<http://www.thymeleaf.org>">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
hello-mvc
를 요청하면 helloController
가 모델을 통해서 데이터를 가공한다(클라이언트의 요청 처리).name:spring
)와 view페이지의 정보(hello-template
)를 담은 ModelAndView객체를 반환한다.hello-template
.html을 찾아 html로 변환하여 반환한다.여기서 모델(model)은 애플리케이션의 데이터(데이타베이스, 처음의 정의하는 상수, 초기화값, 변수 등)을 뜻한다. 또한 이 데이터들의 가공하는 컴포넌트를 포함한다.
보통 일반적인 스프링의 api방식은 객체를 반환하는 것. MappingJakson2HttpMessageConverter를 통해서 json스타일로 바꿔서 반환해준다.
뷰 이런거 없이 바로 html response에 반환해주는 것
@Controller
public class HelloController {
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
}
@Controller
public class HelloController {
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}