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");
//		}
	
	}

}