@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") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
@GetMapping("hello-string")
@ResponseBody
public String helloString (@RequestParam("name") String name){
return "hello" + name;
}
@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;
}
}
}
client에서 hello url로 api를 호출했을 때의 api의 동작
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
<body>
<p th:text="'안녕하세요. ' + ${data}">html 파일명으로 접근하면 보이는 내용입니다.!</p>
</body>
- @GetMapping() : client에서 (api url) + get요청을 서버에 보냈을 때 아래의 함수가 실행된다.
- @GetMapping() 외에도 RequestMapping , PostMapping 등 요청에 따른 어노테이션이 있다.
- model.addAttribute() : model 객체에 addAttribute(key , value) key , value 형태의 데이터를 할당한다.
- return "hello" : 컨트롤러에서 리턴 값으로 문자를 반환하면 view resolver가 templates에서 문자값과 동일한 html을 반환해준다.
-return값과 동일한 이름의 html 파일에서 th:text =" {model에 할당했던 data의 key값} "을 넣어주면 value값이 html에서 반환된다.
client에서 hello-mvc url로 api를 호출했을 때의 api의 동작
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
http://localhost:8080/hello-mvc?name=spring
@RequestParam : @RequestParam("가져올 데이터의 이름") / 데이터의 타입 / 가져온데이터를 담을 변수
client에서 hello-string이라는 url로 api를 호출했을 때의 api의 동작
@GetMapping("hello-string")
@ResponseBody
public String helloString (@RequestParam("name") String name){
return "hello" + name;
}
@ResponseBody : template 엔진을 통하지않고 (viewResolver가 동작하지 않고) http의 body에 직접 데이터를 할당한다.
@Responsebody 어노테이션을 붙혀 문자객체를 넘겨주면 http message converter가 동작한다. 문자를 그대로 내려준다.
client에서 hello-api url로 api를 호출했을 때의 api의 동작
@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;
}
- json형식의 data를 반환하는 restcontroller 방식
- 객체를 return하면 기본 형식이 json방식이기 때문에 객체를 넘겨주면 json형식으로 넘겨준다.
- 객체를 반환하고 ResponseBody 어노테이션을 붙혀주면 json Type으로 객체를 반환하는게 기본이다.
- mappingjackson2httpConverter가 동작해서 json타입으로 객체를 넘긴다.
'Plo Spring' 카테고리의 다른 글
Spring IOC(제어의 역전) , DI (의존성 주입) (0) | 2022.03.27 |
---|---|
Servlet & Dispatcher Servlet (0) | 2022.03.24 |
Rest API Put & Patch (0) | 2022.03.23 |
Spring Controller , Service , Repository , Domain , DTO (0) | 2022.03.21 |
Spring MVC Pattern (0) | 2022.03.20 |