스프링 mvc 구조에서 Ajax 통신으로 json을 return 하는 방법입니다.
스프링에서 json으로 return 받는 방식은 여러가지 방법이 있으며,
이글에서는 jackson 을 사용하고, @ResponseBody 어노테이션을 사용하는 방식입니다.
첫번째 메이븐을 통해 jackson 을 다운 받습니다.
pom.xml에 아래와 같이 추가합니다.
1 2 3 4 5 6 7 8 9 10 11 | <!-- jackson --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.5</version> </dependency> |
(글을 쓰는 당시 위의 버전이 최신이었음.)
두번째로 Ajax 통신을 위한 Controller를 작성합니다.
아래의 예제는 '/admin/push/version' 의 url에 'pushTarget' 값을 전송하여 'VersionVO' 라는 vo 리스트를 담아 전송하는 소스입니다.
간단하게 설명하면, 원하는 결과를 조회하여 json으로 return 하는 부분입니다.
다음에 나오는 Ajax 부분을 보면 좀더 이해하기 쉬을 것 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 | @Controller @RequestMapping( "/admin/push" ) public class PushController { @RequestMapping(value = "/version" ) public @ResponseBody List<VersionVO> version(@RequestParam(required=true) String pushTarget ,HttpServletResponse response) throws Exception { List<VersionVO> versionVO=versionService.versionList(pushTarget); return versionVO; } } |
여기서 중요한 것은 반환형의 앞에 @ResponseBody 라는 어노테이션을 사용한 것입니다.
@ResponseBody을 사용하여 return 결과를 json으로 만드는 것.
마지막으로 Ajax 통신을 하는 자바스크립트 부분입니다.
위에서 작성한 url 경로를 통해 ajax 통신을 하고 json으로 return을 받은 후 결과를 가지고 처리 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <script type= "text/javascript" > $( "#pushTarget" ).change( function (){ $.ajax({ url : "/admin/push/version" , type : "POST" , cache : false, data : "pushTarget=" +$( "#pushTarget" ).val(), success : function (response){ var html = "" ; for ( var i=0; i<response.length; i++){ html += "<option value='" +response[i].versionInfo+ "' label='" +response[i].versionInfo+ "'/>" ; } $( "#pushVersion" ).html(html); $( "#pushVersion" ).selectpicker( "refresh" ); } }); }); </script> |
위의 자바스크립트 부분만을 설명하자면 pushTarget을 선택하는 선택한 값을 전송해
결과 값을 받아 pushVersion이라는 selector의 option 값을 바꿔주는 소스이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <tr> <th>대상 <span class = "required" >*</span></th> <td> <f:select path= "pushTarget" id= "pushTarget" > <f:option value= "And" label= "Android" /> <f:option value= "iOS" label= "iOS" /> </f:select> </td> </tr> <tr> <th>버전 <span class = "required" >*</span></th> <td> <f:select path= "pushVersion" id= "pushVersion" > <c:forEach items= "${versionVO}" var = "resultList" varStatus= "status" > <f:option value= "${resultList.versionInfo }" label= "${resultList.versionInfo }" /> </c:forEach> </f:select> </td> </tr> |
소스의 일부분만 가져온 것이므로,
json으로 return 받기위한 방법만을 참조하면된다.
'SPRING > spring' 카테고리의 다른 글
google polyline encode java (0) | 2022.01.12 |
---|---|
스프링 파일 업로드 예제 (1) | 2017.01.16 |
spring jsp form 한글 깨짐 설정 (0) | 2017.01.06 |
The prefix "mvc" for element "mvc:interceptors" is not bound. (0) | 2017.01.03 |
스프링 시큐리티 비밀번호 bcrypt 간단한 암호화 (2) | 2017.01.03 |