인프런 강의 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
src/main/java/web/GreetingController.java
@Controller
public class GreetingController {
@GetMapping("/param")
public String paramTest(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "param";
}
}
src/main/resources/templates/param.html
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
html로 변환 후 반환
➕ 정적 컨텐츠 이미지 처리 과정
그대로 반환
💡 이거 왜 쓰나 했더니
@Controller
클래스 하나 안에 컨트롤러를 여러개 만들고 싶은데 하나는 view 반환, 하나는 문자열(객체) 반환 ... 이런 식으로 반환하고 싶은 데이터들이 다를 때, 어노테이션을@RestController
를 붙일 게 아니라 문자열(객체)을 반환하고 싶은 컨트롤러에만@ResponseBody
를 붙여주면 된다.지쿠와의 집단지성
src/main/java/web/GreetingController.java
@Controller
public class GreetingController {
@GetMapping("/string")
@ResponseBody // <- http의 응답 body에 데이터를 직접 넣겠다.
public String stringTest(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello " + name;
}
}
@Controller
public class GreetingController {
@GetMapping("/api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name; // 외부에서 접근 x => 라이브러리나 아래 메소드를 통해 접근
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}