@RequestBody / @ResponseBody

@RequestBody : HTTP 요청의 body 내용을 자바 객체로 매핑한다.

@ResponseBody : 자바 객체를 HTTP 요청의 body로 매핑한다.

예제 : test.jsp

function test(){
        var rowData = $("#main_grid").getRowData();    
      
        var json = JSON.stringify(rowData) ;
        var jsonInfo = JSON.parse(json) ;
   
        var actionUrl = "/test/testList.do";
         
 
       
            $.ajax({
                type:"POST",
                dataType : 'json',
                data : json,
                url: actionUrl,
                processData : true /*querySTring make false*/,
                contentType : "application/json; charset=UTF-8",             
                
                success:function(result) {
                    var jsonResult = JSON.parse(JSON.stringify(result)) ;
                     
                    if(jsonResult.result == "success" ) {
                        alert(jsonResult.resultMsg) ;                        
                          
                    } else if (jsonResult.result == "failure" ) {
                        alert(jsonResult.resultMsg) ;
                        return false ;
                    }
                },
                complete : function () {
                },               
                error: AjaxError
            }) ;
       
     } else {
            return false;
        }       
    }

$(“#main_grid”) 라는 jqGrid에서 getRowData()를 통해 전체 Row를 가져왔다.
그 후 Json형식으로 변환한 뒤 파라미터로 던져주었다.

test.java

 

@RequestMapping("/test/testList.do")
 @ResponseBody
 public Object testList(HttpServletRequest request, @RequestBody List> list) throws Exception {
  Map  resultMap =  new HashMap();
   
  String result = "";
  String resultMsg = "";
   
  try {  
   for(Map tList : list) {
    aVO authVO = new AuthVO() ;
     
    aVO.setUse_auth(tList.get("use_auth").toString());
    aVO.setMenu_id(tList.get("menu_id").toString());
    aVO.setUse_yn(tList.get("use_yn").toString());
 
    authMgmtService.mergeAuthMgmtList(aVO) ;
   }
    
   result = "success";
   resultMsg = "성공" ;
    
  } catch (Exception e) {
   result = "failure";
   resultMsg = "실패" ;
  }
   
  resultMap.put("result", result);
  resultMap.put("resultMsg", resultMsg);
   
  return resultMap;
 }

전송 된 파라미터를 List> 형식으로 받아온다. 앞에 @RequestBody를 쓰면 그대로 list에 매핑되어진다.
그리고 list의 size만큼 for문을 실행하는데 aVo라는 vo객체를 하나 생성해서 list에서 받아온 map의 value값을 넣어준다.
작업을 수행한 뒤 result와 resultMsg를 resultMap에 담아 리턴한다. @ResponseBody를 명시했기 때문에 응답데이터에 Map객체가 매핑되어 전달된다.

안녕하세요. 끄적이기를 좋아하는 개발자 이예빈입니다. 매일 일기를 쓰는 것 처럼 블로그를 쓰고 싶어요.
Leave a Reply

Your email address will not be published. Required fields are marked *