JSP
Ajax, JSON 예제
devstep88
2023. 9. 12. 14:20
Ajax(Asynchronous JavaScript and XML):
클라이언트와 서버가 페이지 새로고침 없이 데이터를 주고받도록 구현하는 방식
JSON(JavaScript Object Notation):
javascript객체 문법을 따르는 문자기반의 데이터 포맷
문자열 형태로 존재 -> 네트워크를 통해 전송할 때 아주 유용
문자열에서 네이티브 객체로 변환하는 것을 파싱(Parsing)
네트워크를 통해 전달할 수 있게 객체를 문자열로 변환하는 과정은
문자열화(Stringification)이라고 한다.
SampleDto.java
public class SampleDto {
private String name;
private int age;
public SampleDto() {
super();
// TODO Auto-generated constructor stub
}
public SampleDto(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "SampleDto [name=" + name + ", age=" + age + "]";
}
}
AjaxForm.jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ajaxForm</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(function(){
var v = 1;
$("#myButton").click(function(){
//get - $.get(url, data, function(rData) {}), post - $.post()
// $.get("ajaxSend.jsp", {"v" : v}, function(rData){
$.getJSON("ajaxSend.jsp", {"v" : v}, function(rData){
$.each(rData, function(){ // rData : 배열
var name = this.name;
var age = this.age;
var tr = "<tr>";
tr += "<td>" + name + "</td>";
tr += "<td>" + age + "</td>";
tr += "</tr>"; //<tr><td>홍길동</td><td>20</td></tr>
$("#myTable").append(tr);
});
});
});
});
</script>
</head>
<body>
<input type="button" value="데이터 가져오기" id="myButton"/>
<table border="1" id="myTable">
<tr></tr>
</table>
</body>
</html>
Ajaxsend.jsp
<%@page import="com.gu.vo.SampleDto"%>
<%@page import="org.json.simple.JSONObject"%>
<%@page import="org.json.simple.JSONArray"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<SampleDto> list = new ArrayList<>();
list.add(new SampleDto("홍길동", 20));
list.add(new SampleDto("최길동", 30));
list.add(new SampleDto("고길동", 40));
list.add(new SampleDto("김길동", 50));
list.add(new SampleDto("초길동", 60));
//JSONArray - [], JSONObject - {}
JSONArray jsonArray = new JSONArray(); // []
for(SampleDto dto : list){
JSONObject jsonObject = new JSONObject(); // {}
jsonObject.put("name", dto.getName()); // {"name" : "홍길동"}
jsonObject.put("age", dto.getAge()); // {"name" : "홍길동", "age" : 20}
jsonArray.add(jsonObject); //[{"name":"홍길동", "age":20}, {}, {}]
}
String data = jsonArray.toJSONString();
out.print(data);
%>
data.jsp
${data}