Spring MVC에서 JSON 을 통한 Request/Response 방법 예시
@Controller //Anotation 으로 Conroller 호출 @RequestMapping("/jsonController ") // ROOT/ jsonController 경로로 오는 URL은 모두 이 Controller에 매핑 public class jsonController { //Controler(Class 정의)
@Resource(name=" jsonControllerService") private JsonControllerService jsonControllerService; // Anotation을 이용하여 사용할 Service Class 호출 //Service단에서 jsonControllerService 로 정의된 Service항목을 자동 매핑 해준다.
//RequestMapping을 이용한 URL mapping. / jsonController 다음에 /jsonData가 오면 아래 메서드로 매핑된다. // 예) http://localhost/프로젝트명/ jsonController /jsonData // 또한 RequestMethod.POST 정의를 통해, POST방식으로 요청을 받게끔 정의한다. (GET 요청은 매핑 안시켜줌) // consumes를 통해 POST방식으로 넘어온 요청에서 json 형태로 postData를 넘겨줌을 정의 @RequestMapping(value="/jsonData", method=RequestMethod.POST,consumes="application/json") public @ResponseBody List<Map<String,Object>> getCheckListSpecificByAjax(@RequestBody Map<String,Object> map){
//@ResponseBody : 해당 메서드의 Return 타입 설정. 여기서는 List<Map<String,Object>> 형식으로 리턴해줌 // 특정 DTO(VO) 형식으로 할 경우, 해당 타입으로 정의 (ex: @ResponseBody List<User>) //@RequestBody : 해당 메서드로 넘어오는 postData의 데이터 형태(json 구조) 선언 // 만약 특정 DTO(VO)의 형태로 자동 매핑하여 받을 경우, 해당 타입으로 정의 (ex: @RequestBody User user)
List<Map<String,Object>> list = jsonControllerService.selectDashboardList(map); //Service에서 리턴된 값을 받는 부분. 주로 DB처리 후의 값을 Service단(jsonControllerService.selectDashboardList)에서 해줌 //특정 DTO(VO)로 받을 경우 해당 정의로 받아주면 됨 //예) List<User> uList = sampleService.selectList();
return list; //조회 결과 return //return시에는 넘겨줄 json 구조로 데이터를 구성 한 후 리턴해준다. //만약 List<User> uList = sampleService.selectList(); 형태로 리턴이 된다고 하면 아래와 같은 구조로 JSON이 리턴됨 //List = { // {ID: id1, PW: pw1, email:email1@email.com}, // {ID: id2, PW: pw2, email:email2@email.com}, // ...... // } //즉, List라는 큰 배열안에, User라는 DTO가 여러 개 들어가 있는 구조. //List 내부의 DTO값들에 대한 편집이 필요할 경우, While이나 For등을 통해 List의 각 Row조회 후 user값에 접근 //예) //User user = null; //for(int i=0; i<list.size(); i++){ // user = list.get(i); // //user.getID(); // //user.setID(“temp”); //} }
} |