목차

  1. User 정의
  2. Controller 활용하기
  3. RestController 활용하기

User 정의

public class User {
    private String id;
    private String name;
    private String email;

    public User(String id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
@Data
public class User {
    private String id;
    private String name;
    private String email;
}

Controller 정의

@Controller
public class UserController {

    @GetMapping("/home")
    public String homePage() {
        return "home";
    }

    @GetMapping("/doit")
    public String doitPage() {
        return "doit";
    }

    @GetMapping("/userPage")
    public String userPage(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "user";
    }

    @GetMapping("/userModelPage")
    public String userPage(@ModelAttribute User user, Model model){
        model.addAttribute("user", user);
        return "userModel";
    }
    
    @ResponseBody
    @GetMapping("/responseBody")
    public String responseBody() {
        return "Hello World!";
    }

}

Untitled

ResponseBody

@ResponseBody 어노테이션은 스프링 MVC에서 컨트롤러 메소드의 반환값을 HTTP 응답 본문(Body)에 직접 쓰도록 지시한다. 이는 주로 RESTful 웹 서비스를 구현할 때 사용되며, 반환값을 View 이름으로 해석하는 대신 HTTP 응답의 내용으로 사용된다.

RestController 정의

Controller는 주로 웹 페이지를 반환하는데 사용되며, 데이터와 함께 뷰 이름을 반환합니다. 반면에 RestController는 HTTP 응답 본문에 직접 데이터를 쓰는데 사용되며, 주로 RESTful API를 구현하는데 사용됩니다. 즉, RestController는 클라이언트에게 데이터를 반환하고, Controller는 주로 뷰를 반환하는 차이가 있습니다.

@RestController는 @Controller + @RequestBody를 통해 구현된다고 보면 된다.