Spring Controller란?
Spring MVC(Model View Controller)에서 C를 해당한다
사용자의 요청을 처리하여 지정된 뷰에 모델 객체를 넘겨준다
정적 컨텐츠
@Controller
public class HelloController {
@GetMapping("hello") // /hello 들어올 때 호출되는 메소드
public String hello(Model model){
model.addAttribute("data", "hello!!");
return "hello"; //hello.html로 랜더링
}
}
hello경로로 진입하면 hello.html에 랜더링하여
data 변수에 "hello!!" 준다
MVC
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String hellomvc(@RequestParam(value = "name") String name, Model model){ //파라미터를 받음
model.addAttribute("name", name);
return "hello_template";
}
}
hello-mvc경로 뒤에 name 변수 값을 넣어주면(ex. ?name=Spring)
hello_template.html에 랜더링하여 name 변수에 작성한 값을 준다
API
@Controller
public class HelloController {
//1. String 반환
@GetMapping("hello-string")
@ResponseBody //http 통신 body부분에 직접 return값 입력
public String helloString(@RequestParam("name") String name){
return "hello " + name; //데이터를 그대로 가져옴
}
//2. 객체 반환
@GetMapping("hello-api")
@ResponseBody //http 통신 body부분에 직접 return값이 json 형태(객체이므로)로 반환
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;
}
}
}
hello-string 경로에 뒤에 name 변수 값을 넣어주면
return 값을 그대로 웹에 가져온다
hello-api 경로 뒤에 name 변수 값을 넣어주면
Hello 객체를 만들어서 json형태로 return한다