- 클라 -->서블렛으로 넘기는 과정
1. 먼저 자바스크립트 배열을 만든 후 stringify로 JSON 형식의 문자열로 변환
2. application/json으로 전달
3. request.Reader()로 받아서 읽어주고 readLine()으로 값 읽어서 저장
4. JSONObject 사용하여 JSON 데이터를 파싱하여 객체로 변환
5. get으로 값을 뽑아낸 후 형변환 해서 변수에 저장
6. 자바객체 UserBean 생성 후 set으로 저장
---------------------------------
- 여기서부턴 서블렛->클라보내는 영역
7. JSONObject를 써서 JSON 객체 생성 후 6번에서 set한걸 넣어주고 JSON 형태의 객체로 만들어준다
8. PrintWriter로 보내준다
9. 자바스크립트에서 받고 JSON 문자열을 JavaScript에서 사용 가능한 객체로 변환 -->JSON.parse 사용
parse라는 걸 활용하려면 {"name":"흰둥이","age":3} 이런식의 형태가 넘어온다는 것을 기억하자!!
10.자바스크립트 객체값 뽑듯이 값을 뽑아내면 된다~
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
window.onload = function() {
const btns = document.querySelector("#btns");
btns.addEventListener("click", f);
let array = {
name: "흰둥이",
age: 3
};
let jstr = JSON.stringify(array);
function f() {
const xhttp = new XMLHttpRequest();
xhttp.onload = function() {
let jobj = JSON.parse(this.responseText);
document.querySelector("#divs").innerHTML = "이름:" + jobj.name +"<br>나이:" + jobj.age;
}
xhttp.open("Post","Json_03practice",true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send(jstr);
}
}
</script>
</head>
<body>
<button id="btns">버튼동작</button>
<div id="divs"></div>
</body>
</html>
package servlet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONArray;
import org.json.JSONObject;
import beans.UserBean;
@WebServlet("/Json_03practice")
public class Json_03practice extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
BufferedReader br = request.getReader();
String s =br.readLine();
JSONObject jobj = new JSONObject(s);
System.out.println(jobj);
System.out.println(jobj.get("name"));
System.out.println(jobj.get("age"));
System.out.println("---------------");
// String name = (String)jobj.get("name");
String name = jobj.getString("name");
Integer age = (Integer)jobj.get("age");
System.out.println(name);
System.out.println(age);
System.out.println("---------------");
UserBean ub = new UserBean(name, age);
JSONObject jobj2 = new JSONObject(ub);
System.out.println(jobj2);
response.setCharacterEncoding("utf-8");
PrintWriter pw = response.getWriter();
pw.print(jobj2);
}
}
package beans;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserBean {
private String name;
private int age;
}
'JSP > 연습' 카테고리의 다른 글
평가 3번째문제 (0) | 2023.06.25 |
---|---|
정처기산업2번째문제 (0) | 2023.06.25 |
ajax로 crud해보기//JSON 1일차.. (0) | 2023.06.20 |
게시글 댓글연습 +AJAX + JSON 추가로 배운거 써먹기 //JSONArray //toString() (0) | 2023.06.19 |
1회차 정보처리 산업기사 문제 풀어보기 (0) | 2023.06.16 |