yoursyun
spring controller - json return ( request, response ) 본문
spring 에서 json 타입으로 request, response 처리하기 위해
pom.xml 에 다음 내용을 추가한다.
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${com.fasterxml.jackson.core-version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
메이븐 업데이트 하여 라이브러리(저장소) 를 추가한다.
* servlet context xml 에
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
와 같이 어노테이션 모드로 작성된경우, 아래의 코드를 통해 JSON 타입으로 mapping 하여 return 할 수 있다.
<html code>
* .formToJson 라이브러리 링크 https://www.jqueryscript.net/form/form-data-json-object.html
$('#JsonReqRev').on('click',function(){
// var param = JSON.stringify( $("#frmTest").serializeArray() );
// 위와 같은 serializeArray 는 name, value array 타입이기에
// .formToJson() 외부 라이브러리 활용.
var param = JSON.stringify($("#frmTest").formToJson());
console.log("param : " + param);
$.ajax({
url:'/orgsrv/TestCall',
type:'post',
contentType: "application/json; charset=UTF-8",
data:param,
success:function(data){
console.log(data);
var result = JSON.stringify(data);
var obj = JSON.parse(result);
$('#lblResult').append("obj.test1 : " + obj.test1);
$('#lblResult').append("<br />obj.test1 : " + obj.test2);
},
error: function(request, status, error) {
$('#lblUserInfo').append(request + "/" + status + "/" + error);
}
});
});
controller
@ResponseBody
@RequestMapping(value = { "/TestCall" })
public Map TestCall(@RequestBody Map<String, Object> param) {
System.out.println(param.get("param1").toString() + "\t" + param.get("param2").toString());
Map result = new HashMap<String, String>();
result.put("test1", "test1");
result.put("test2", "test2");
return result;
}
반응형