반응형
스프링 MVC 컨트롤러에 JSON 데이터 전달
스프링 MVC 컨트롤러에 JSON 문자열을 보내야 합니다.단, 폼바인딩은 없습니다.컨트롤러 클래스에 플레인 JSON 데이터를 전송하기만 하면 됩니다.아래 코드와 같이 컨트롤러 메서드에 jQuery AJAX를 호출합니다.
$.ajax ({
url: "./save",
type: "POST",
data: JSON.stringify(array),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(){
alert("success ");
}
});
하지만 Controller 메서드로 검색하려면 어떻게 해야 하나요?(주의: 폼 제출이 아닌 플레인 JSON 데이터입니다).
다음 종속성 추가
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.7</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.7</version>
</dependency>
다음과 같이 요청 수정
$.ajax({
url:urlName,
type:"POST",
contentType: "application/json; charset=utf-8",
data: jsonString, //Stringified Json Object
async: false, //Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation
cache: false, //This will force requested pages not to be cached by the browser
processData:false, //To avoid making query String instead of JSON
success: function(resposeJsonObject){
// Success Message Handler
}
});
컨트롤러 측
@RequestMapping(value = urlPattern , method = RequestMethod.POST)
public @ResponseBody Person save(@RequestBody Person jsonString) {
Person person=personService.savedata(jsonString);
return person;
}
@RequestBody
- Json 객체를 java로 변환
@ResponseBody
- Java 객체를 json으로 변환
HTML
$('#save').click(function(event) { var jenis = $('#jenis').val(); var model = $('#model').val(); var harga = $('#harga').val(); var json = { "jenis" : jenis, "model" : model, "harga": harga}; $.ajax({ url: 'phone/save', data: JSON.stringify(json), type: "POST", beforeSend: function(xhr) { xhr.setRequestHeader("Accept", "application/json"); xhr.setRequestHeader("Content-Type", "application/json"); }, success: function(data){ alert(data); } }); event.preventDefault(); });
컨트롤러
@Controller @RequestMapping(value="/phone") public class phoneController { phoneDao pd=new phoneDao(); @RequestMapping(value="/save",method=RequestMethod.POST) public @ResponseBody int save(@RequestBody Smartphones phone) { return pd.save(phone); }
다오
public Integer save(Smartphones i) { int id = 0; Session session=HibernateUtil.getSessionFactory().openSession(); Transaction trans=session.beginTransaction(); try { session.save(i); id=i.getId(); trans.commit(); } catch(HibernateException he){} return id; }
JSON 오브젝트를 JSON.stringify(jsonObject)로 문자열화하여 컨트롤러로 수신할 수 있습니다.
컨트롤러에서 javax.json을 사용하여 이를 변환하고 조작할 수 있습니다.
.jar를 다운로드하여 프로젝트 libs에 추가하고 Json Object를 Import합니다.
json 객체를 작성하려면
JsonObjectBuilder job = Json.createObjectBuilder();
job.add("header1", foo1);
job.add("header2", foo2);
JsonObject json = job.build();
String에서 읽으려면
JsonReader jr = Json.createReader(new StringReader(jsonString));
JsonObject json = jsonReader.readObject();
jsonReader.close();
언급URL : https://stackoverflow.com/questions/18524524/passing-json-data-to-a-spring-mvc-controller
반응형
'prosource' 카테고리의 다른 글
오류: 대부분의 미들웨어(json 등)는 Express에 번들되지 않으므로 별도로 설치해야 합니다.봐주세요 (0) | 2023.03.14 |
---|---|
Application Context Aware는 봄에 어떻게 작동합니까? (0) | 2023.03.14 |
ESLint with React에서 "no-used-vars" 오류가 발생함 (0) | 2023.03.14 |
React.Children.map 재귀적으로? (0) | 2023.03.14 |
React + Redux에서 중첩된 컴포넌트의 소품 업데이트를 최적화하는 방법 (0) | 2023.03.14 |