JSP/이론
JSON/파라미터로 보내기(GET, POST) //xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");//xhttp.setRequestHeader("Content-type", "application/json");
SEOKIHOUSE
2023. 6. 21. 12:19
- GET파라미터로 보내보기
<%@ 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("#btn");
btn.addEventListener("click", f);
function f () {
const xhttp = new XMLHttpRequest();
xhttp.onload = function() {
let text = JSON.parse(this.responseText);
document.getElementById('demo').innerHTML = "이름:" +text.name +"<br>나이:" +text.age;
}
xhttp.open("GET", "feedback?name=짱구&age=8", true);
xhttp.send();
}
}
</script>
</head>
<body>
<button id="btn">버튼</button>
<div id="demo"></div>
</body>
</html>
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
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.JSONObject;
import beans.UserBean;
@WebServlet("/feedback")
public class Json_01 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String stage = request.getParameter("age");
int age = Integer.parseInt(stage);
UserBean ub = new UserBean(name,age);
JSONObject jobj = new JSONObject(ub);
System.out.println(jobj);
PrintWriter out = response.getWriter();
//문자열형식으로 써주려고
out.print(jobj);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
package beans;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserBean {
private String name;
private int age;
}
- POST로 보내보기
- xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 써야한다
- 자바스크립트에서 서블릿으로 json형식으로 바꾼 후 보내보자(프론트 -> 백에 보내는 방식)
<%@ 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("#btn");
btn.addEventListener("click", f);
function f () {
const xhttp = new XMLHttpRequest();
let user = {
name : "짱구",
age : 8,
};
let juser = JSON.stringify(user);
xhttp.onload = function() {
alert(this.responseText)
}
//xhttp.open("GET", "feedbackJson", true);
xhttp.open("POST", "feedbackJson" , true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send(juser);
}
}
</script>
</head>
<body>
<button id="btn">버튼</button>
<div id="demo"></div>
</body>
</html>
package servlet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
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.JSONObject;
import beans.UserBean;
@WebServlet("/feedbackJson")
public class json_02 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
//response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
UserBean ub = new UserBean("짱구객체",55);
JSONObject user02 = new JSONObject(ub);
out.print(user02);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
BufferedReader br = request.getReader();
String jstr = br.readLine();
System.out.println(jstr); //{"name":"짱구","age":8}
System.out.println("------------");
JSONObject jobj = new JSONObject(jstr);
String name = (String) jobj.get("name");
//int age = (int) jobj.get("age");
Integer age = (Integer) jobj.get("age");
System.out.println(jobj.get("name")); //짱구
System.out.println(jobj.get("age")); //8
System.out.println("------------");
UserBean user = new UserBean(name,age);
System.out.println(user.getName());
System.out.println(user.getAge());
//DB에 저장시
//int result = db.insert(); 이런식으로
// if (result == 1) {
// PrintWriter out = response.getWriter();
// out.print("sucess");
// } else {
// out.print("fail");
// }
}
}