RestController 정리

@RestController

  • Controller 어노테이션은 view를 반환다
  • RestController 어노테이션은 return 시 Json, xml 등 객체를 반환한다

json lib 추가

<!--  https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.8</version>
</dependency>

Member.java

  • model
    package kosta.model;
    public class Member {
         private String name;
         private String email;
           
         public Member(){}
         public Member(String name, String email) {
                super();
                this.name = name;
                this.email = email;
         }
           
         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;
         }
         @Override
         public String toString() {
                return "Member [name=" + name + ", email=" + email + "]";
         }      
    }
    

index.html

  • index.html 접속 시 client url로 이동한다

JsonController.java

  • JsonController에서 client view를 전달한다. 매핑에 의해서 view/client.jsp 로 치환한다
    @Controller
    public class JsonController {
         @RequestMapping("/client")
         public String client(){
                return "client";           
         }
    }
    

client.jsp

  • client.jsp에서 페이지 로드와 동시에 $(function())함수가 호출된다
  • 이 때 getJSON 함수로 spring_json url로 이동을 요청한다
  • ajax 결과 json 데이터를 출력한다

ListController.java

  • ListController에 @RestController가 선언되어있다. 그래서 모든 함수의 return 값은 view가 아닌 데이터이다
@RestController
public class ListController {
       @RequestMapping("spring_json")
       public List<Member> spring_json(){
              List<Member> list = new ArrayList<>();
              list.add(new Member("백종원", "aa@aa.com"));
              list.add(new Member("조보아", "bb@bb.com"));
              return list;
       }
}