Json 데이터 ajax 전송 java Controller에서 받기
jsp 에서 ajax 등을 활용하여 서버로 json 데이터를 보내야 할 경우가 있습니다.
이럴 때 서버에서 json 데이터를 받는 방법을 알아보도록 하죠.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
var jsonStr = JSON.stringify(params); //params는 object
ajaxJsonHeader : function (url, params, func){
$.ajaxSetup({
headers: { "AJAX": "true" }
});
$.ajax({
url: url,
type: 'POST',
data: params,
dataType : 'json',
contentType : "application/json; charset=UTF-8",
async: false,
success: function(returnData){
func(returnData);
},
});
});
|
cs |
ajaxSetup과 contentType 을 잘 확인하시기 바랍니다.
[java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
private String readJSONStringFromRequestBody(HttpServletRequest request){
StringBuffer json = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while((line = reader.readLine()) != null) {
json.append(line);
}
}catch(Exception e) {
System.out.println("Error reading JSON string: " + e.toString());
}
return json.toString();
}
|
cs |
위의 코드를 json 데이터를 받아 사용할 곳에 추가합니다.
(위의 클래스는 json데이터를 String 으로 바꾸어 주는 역할을 한다. )
|
public String 클래스명(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
Gson gson = new Gson();
DataSet set = new DataSet();
return gson.toJson(set);
}
|
cs |
위의 readJSONStringFromRequestBody 클래스를 사용하여 request로 받은 json 데이터를 String 으로 치환합니다.
String json = readJSONStringFromRequestBody(request);
바꿔준 String 값을 제이슨 오브젝트에 넣어 제이슨 데이터로 가공합니다.
JSONObject jObj = new JSONObject(json);
한글화나 데이터가 빈값이 넘어간다면 아래의 값을 추가해 봅니다.
@RequestMapping(value="URL", produces="text/plain;Charset=UTF-8")
@ResponseBody
|
public String 클래스명(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
Gson gson = new Gson();
DataSet set = new DataSet();
String json = readJSONStringFromRequestBody(request);
JSONObject jObj = new JSONObject(json);
return gson.toJson(set);
}
|
cs |
위와 같이 json 데이터를 request로 받아 원하는 가공을 하면 됩니다.
GSON을 사용할 경우 아래와 같이도 가능합니다.
|
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
.
.
.
String jsonStr = readJSONStringFromRequestBody(req);
JsonObject jo = (JsonObject)jsonParser.parse(jsonStr); |
cs |
댓글