program/spring

spring controller - json return ( request, response )

yoursyun 2020. 7. 17. 15:13

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;
	}

 

반응형