학원/Servlet

Json / Gson

주먀 2023. 5. 8. 16:49

★ Json 

dataType : "json", // 응답받는 데이터 형식이 무엇인지

자바객체로 바로 사용 가능!

String -> Object

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>


	<input type="text" name="data">

	<!--
	button == input type="submit"
	input type="button" -->

	<button id="btn" type="button">전송</button>

	<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
	<script type="text/javascript">
		// 비동기 통신(ajax) --> JQuery 라이브러리 필요

		// 1. button 태그를 선택
		// var btn = document.getElementById("btn");
		var btn = $('#btn');
		var input = $('input[name=data]');

		// 2. button 태그에 이벤트 부여
		btn.on('click', request);

		var result = "";
	
		// 호이스팅
		function request() {
			console.log("클릭!")

			// 3. ajax를 사용해서 비동기 방식으로 요청 보내기
			$.ajax({
				url : 'ajax.do', // 어디로?
				type : 'post', // Get?, Post?
				data : {
					// data : "data=value&data2=value2..."
					// key : value
					"data" : input.val()

				}, // 보낼 데이터
				dataType : "json", // 응답받는 데이터 형식이 무엇인지
				success : function(res) {// 응답입니다~~~
					// 요청이 성공하면 실행될 콜백함수
					// res > response
					console.log(res);// 응답입니다~~~
					result = res;

					// 응답시점이 코드 실행 보다 느릴 수 있으므로
					// 응답결과를 사용할 떄는 가급적 success 안에서 할 것!
					console.log("ajax 끝 : " + result); // 응답입니다~~~
				},
				error : function(e) {
					// 요청이 실패하면 실행될 콜백함수
					alert("요청 실패!");
				}
			});

		}
	</script>

</body>
</html>

 

 

 

 

 

 

Gson 데이터 형식 사용 -> https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.9 -> 사이트

 

 

1. pome.xml -> Gson 코드 붙여넣기

2. AjaxCon.java -> 코드작성

package kr.smhrd.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;

import kr.smhrd.dao.MemberDAO;
import kr.smhrd.entity.Member;

public class AjaxCon implements Controller {

	@Override
	public String execute(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		System.out.println("요청이 도착함.");

		// 1. 데이터 수집
		request.setCharacterEncoding("UTF-8");

		String data = request.getParameter("data");

		System.out.println(data);

		// 비동기 통신을 할 때는 페이지 이동 X
		// 필요한 데이터만 응답
		// 3. 데이터 응답
		// ajax는 uft-8 만 가능
		response.setCharacterEncoding("UTF-8");

		PrintWriter out = response.getWriter();

		// 회원 전체 목록을 json 형식
		MemberDAO dao = new MemberDAO();

		List<Member> list = dao.select();

		// Java 객체를 Json으로 변환시키기위한 Gson 라이브러리
		// 1) Gson 객체 생성
		Gson gson = new Gson();

		// 2) Java Object를 JSON
		String json = gson.toJson(list);

		System.out.println(json);
		// json 데이터를 응답하기.
		// String json = "{ \"key\" : \"value\"}";

		out.print(json);

		return null;
	}

}