-
[Javascript / Servlet] Ajax POST로 보낸 JSON 데이터 Servlet에서 받아오기Javascript 2020. 2. 24. 20:24
보냄, Ajax call
var obj = new Object(); obj.id = event.currentTarget.parentNode.id; obj.type = event.currentTarget.parentNode.parentNode.id; const xhr = new XMLHttpRequest(); xhr.open('POST', 'TodoTypeServlet'); xhr.setRequestHeader('Content-type', 'application/json'); xhr.send(JSON.stringify(obj));
받음, Servlet 코드
//JSON Parsing StringBuffer jb = new StringBuffer(); String line = null; try { BufferedReader reader = request.getReader(); while ((line = reader.readLine()) != null) jb.append(line); } catch (Exception e) {/* report an error */ } JsonParser parser = new JsonParser(); JsonElement element = parser.parse(jb.toString()); long id = element.getAsJsonObject().get("id").getAsLong(); String type = element.getAsJsonObject().get("type").getAsString();
1.
POST로 보낸 데이터를 getParameter로 읽으려면 content Type이 무조건 application/x-www-form-urlencoded여야 함
근데 난 application/json으로 보냈기 때문에 request.getParameter로 읽으면 null이 나왔다
Normaly you can GET and POST parameters in a servlet the same way:
request.getParameter("cmd");
But only if the POST data is encoded as key-value pairs of content type: "application/x-www-form-urlencoded" like when you use a standard HTML form.
If you use a different encoding schema for your post data, as in your case when you post a json data stream, you need to use a custom decoder that can process the raw datastream from:
BufferedReader reader = request.getReader();
출처 :
https://stackoverflow.com/questions/3831680/httpservletrequest-get-json-post-data
2.
BufferedReader를 이용해 raw datastream을 읽을 때
다음과 같은 JSON String 타입만 읽을 수 있다.
예) "{"Name":"SooYoung","Age":"29"}"
처음에 계속 프론트에서 {"key", JSON String} 형식을 보내고 읽으려고 해서 읽지 못했다.
이렇게 하면 안됨! >
var obj = new Object(); obj.id = event.currentTarget.parentNode.id; obj.type = event.currentTarget.parentNode.parentNode.id; var sendData = { jsonData : JSON.stringify(obj) }; const xhr = new XMLHttpRequest(); xhr.open('POST', 'TodoTypeServlet'); xhr.setRequestHeader('Content-type', 'application/json'); xhr.send(sendData);
'Javascript' 카테고리의 다른 글
[Javascript] DOMContentLoaded / load 비교 (0) 2020.02.28 Ajax (0) 2020.02.24 [HTML / Javascript] 동적으로 id 부여 (0) 2020.02.24 html / css / js 웹에서 시뮬레이션 (0) 2020.02.20 Javascript Event (0) 2020.02.17