SpringBoot
[SpringBoot]스프링 웹 개발 기초(김영한 / 스프링 입문)
bangle0621
2021. 1. 23. 19:22
정적 컨텐츠
정적인 데이터. HTML 에 저장이 되어있는 데이터를 그대로 화면에 전달한다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>



MVC와 템플릿 엔진
JSP나 PHP. 뷰에 데이터를 보내어 사용한다 .
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String test, Model model) {
model.addAttribute("name",test);
return "hello-template";
}
"name"이라고 되어있는 부분이 호출할 때의 이름이다.

두 부분이 일치하지 않으면 오류가 뜬다.
해당 방법은 test2가 화면에 뜨는 방식이 아닌 get방식으로 url에 입력된 값을 가져온다.

저 부분엔 key 의 이름을 적어줘야 값을 맵핑하여 가져올 수 있다.
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

이전과는 달리 화면이 뜨질 않는다.

name(key)= {name}에 들어갈 내용
이렇게 값을 넣어줘야지 화면이 나온다.
API
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello " + name;
}

소스 보기를 해도 html이 아닌 내용만 나온다.

@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;
}
}
static 을 사용하여 Hello라는 클래스를 사용할 수 있게 만들어주고, name을 getter setter를 통해 빈으로 사용할 수 있게 만들어 주었다.

json 형태로 key:value 값으로 출력되어 나온다.