Spring은 정적 컨텐츠를 제공한다.
static에서 정적 파일을 던져준다. (프로그래밍 불가)
localhost:8080/hello.html -> controller에서 매핑이 된 url이 있는지 확인 -> 없으면 static에서 해당 정적 파일을 찾아서 반환
Model-View-Controller
View는 화면을 그리는데 모든 역량을 집중해야한다.
Model-Controller는 내부적인 비즈니스 로직을 처리해야한다.
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value = "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>
static class Hello {
private String name;
private String aa = "asdfasdf";
public void setName(String name) {
this.name = name;
}
public String getAa() {
return aa;
}
public String getName() {
return name;
}
}
@GetMapping("hello-api")
@ResponseBody
public Hello helloAPi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
return hello; //객체를 반환
위처럼 @ResponseBody 어노테이션을 설정하게 되면 아래와 같은 구조로 동작한다.
controller 메소드에 ResponseBody가 붙어있는걸 확인하고 뷰리졸버 대신 HttpMessageConveter가 동작한다.
만약 객체 형태라면 기본으로 탑재된 잭슨 라이브러리로 Json으로 파싱한 뒤 클라이언트에게 반환한다.
위 코드에서는 파라미터로 값을 받은 뒤 객체를 생성하고 세팅하고 객체를 반환한다.
그럼 아래처럼 객체가 Json 형태의 파일로 반환된 것을 볼 수 있다.