Ajax 요청에 따른 응답
- 처리할 수 있는 데이터 형태 : XML, HTML, TXT, JSONHTML : 웹페이지 일부를 업데이트
- 특징
- 응답처리가 간결.
- 브라우저별로 별도의 처리가 필요없음 (바로 사용가능).
 
- 한계
- 서버가 사용가능한 페이지를 리턴해야만 함. = 데이터 이식성이 좋지 않음.
- 요청이 반드시 같은 도메인으로 처리되어야 함.
 
XML : HTML과 유사하게 사용하지만 태그의 이름이 다르다.
- 특징
- 태그의 데이터를 지정해서 사용가능 => 거의 모든 플랫폼에서 사용.
- 다양한 데이터타입의 구조를 표현가능
- HTML태그와 유사하게 처리 가능.
 
- 한계
- 데이터 처리시 많은 리소스가 필요하기때문에 많은 양의 코드가 필요함.
- 요청이 반드시 같은 도메인으로 처리되어야 함.
 
JSON : js객체표현식(=JavaSscript Object Natation)
- 특징
- html/xml보다 간결한 데이터처리 가능 (이름 : 값-쌍)
- 위의 한계였던 다른 도메인 요청에서도 사용가능.
 
- 한계 
- 문법이 예민함 > 콤마, 따옴표, 콜론 등등 문법처리 중요 > 잘못하면 파일 전체 사용불가
- 악의적인 목적의 객체를 사용가능 > 신뢰된 페이지에서만 사용가능하게 처리해야 함.
 
Ajax xml처리
xml.jsp 파일생성
- contentType=”text/xml”로 설정하기
- 임의의 xml데이터작성하기
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 
 | <%@ page language="java" contentType="text/xml; charset=UTF-8"pageEncoding="UTF-8"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <!-- 임의로 xml데이터 만들어보기  -->
 <people>
 <person>
 <name>유저1</name>
 <gender>여</gender>
 <hobby>독서</hobby>
 </person>
 <person>
 <name>유저2</name>
 <gender>여</gender>
 <hobby>여행</hobby>
 </person>
 <person>
 <name>유저3</name>
 <gender>여</gender>
 <hobby>운전</hobby>
 </person>
 </people>
 
 | 
xml.html 파일생성
xml.jsp파일을 xml데이터를 볼러와서 xml.html에서 출력하기.
- 제이쿼리 준비
- ajax사용
- 출력값이 object이므로 접근을 each로 해야함
- object와 배열은 주로 each로 접근한다.
 
- body에 출력
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 
 | <script src="../js/jquery-3.5.1.min.js"></script><script type="text/javascript" >
 $(function(){
 
 
 
 $.ajax({
 url:"xml.jsp",
 success: function(data){
 
 
 
 
 
 let tmp = $(data).find('person');
 
 
 
 
 $(data).find('person').each(function(){
 let name = $(this).find('name').text();
 let gender = $(this).find('gender').text();
 let hobby = $(this).find('hobby').text();
 
 
 $('body').append(name+"/"+gender+"/"+hobby+"<br>");
 
 });
 },
 error:function(){
 alert('xml데이터를 읽어오기 실패');
 }
 });
 });
 </script>
 
 | 
Ajax json처리
- 항상 속성(key)-값(value)쌍으로 구성.
- 속성구분시 콤마(,)로 구분함.
- {} = json객체를 의미
- [] = json배열을 의미
- 우리가 사용하는 거의 모든 브라우저에는 json타입을 처리하는 json파서가 포함되어있다. 그래서 브라우저에서 파일이 자동으로 열림
지원하는 자료형
- 정수형(10진수) (2,816진수X)
- 실수형(고정 소수점 , 부동 소수점)
- 고정소수점 : 1.123
- 부동소수점 : 1e4, 2.4E-5
 
- boolean형
- Null
- 문자형(문자열) ex “”
- 배열 : 타입에 상관업싱 모두 저장 가능
- 배열안에 객체 저장 가능, 배열안에 배열저장 가능| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | [{
 "name":"지영",
 "age":77,
 ["abc",123,321]
 },
 {
 "name":"영희",
 "age":88
 }
 ]
 
 |  
 
 
Json1.jsp생성 + Json1.html생성 : Ajax사용
- contentType=”application/json; charset=UTF-8” 로 마임타입(MIME타입) 바꾸기 
- 임의의 json데이터 입력
| 12
 3
 4
 5
 6
 7
 
 | <%@ page language="java" contentType="application/json; charset=UTF-8"pageEncoding="UTF-8"%>
 {
 "name":"하지",
 "gender":"여",
 "hobby":"게임"
 },
 
 | 
- Json1.html생성 : Ajax사용
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 
 | <script src="../js/jquery-3.5.1.min.js"></script><script type="text/javascript" >
 $(function(){
 
 
 $.ajax({
 
 url: "Json1.jsp",
 dataType: "json",
 success: function(data){
 
 
 
 
 $.each(data, function(item, data){
 alert(item+"/"+data);
 $('body').append(item+"/"+data+"<br>")
 });
 },error: function(){
 alert("json데이터가져오기 실패");
 
 }
 });
 });
 </script>
 
 | 
Json1.jsp생성 +Json1_1.html생성 : getJSON사용
- contentType=”application/json; charset=UTF-8” 로 마임타입(MIME타입) 바꾸기 
- 임의의 json데이터 입력
| 12
 3
 4
 5
 6
 7
 
 | <%@ page language="java" contentType="application/json; charset=UTF-8"pageEncoding="UTF-8"%>
 {
 "name":"하지",
 "gender":"여",
 "hobby":"게임"
 },
 
 | 
- Json1.html생성 : getJSON사용
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | <script src="../js/jquery-3.5.1.min.js"></script><script type="text/javascript" >
 $(function(){
 
 $.getJSON('Json1.jsp', function(data){
 
 $.each(data, function(item, data){
 $('body').append(item+"/"+data+"<br>")
 })
 });
 
 });
 </script>
 
 | 
Json2.json생성 +Json2.html생성 : 배열데이터를 getJSON사용
- json데이터가 한개가 아니라 여러개일때 즉 json데이터가 배열일때 body에 출력하는 예시이다.
- 가장 많이 사용한다.
- Json2.json생성
- 임의의 json데이터 입력
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 
 | [{
 "name":"하지",
 "age":77,
 "addr":"일산"
 },
 {
 "name":"메지",
 "age":66,
 "addr":"대구"
 },
 {
 "name":"한사장",
 "age":55,
 "addr":"부천"
 }
 ]
 
 | 
- Json2.html생성
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 
 | <script src="../js/jquery-3.5.1.min.js"></script><script type="text/javascript" >
 $(function(){
 $.getJSON('Json2.json', function(data){
 
 $.each(data, function(index, item){
 $('body').append("사용자"+(index+1)+" : "+item.name+" / "+item.age+" / "+item.addr+"<br>")
 })
 
 
 $.each(data, function(index, item){
 $('table').append("<tr><td>"+item.name+"</td>"+"<td>"+item.age+"</td>"+"<td>"+item.addr+"</td></tr>")
 })
 
 })
 })
 </script>
 </head>
 <body>
 <table border="1" style="text-align:center">
 <tr>
 <th> 이름 </th>
 <th> 나이 </th>
 <th> 주소 </th>
 </tr>
 </table>
 
 //첫번째 출력값
 사용자1 : 하지 / 77 / 일산
 사용자2 : 메지 / 66 / 대구
 사용자3 : 한사장 / 55 / 부천
 
 //두번째 출력값
 이름	나이	주소
 하지	77	일산
 메지	66	대구
 한사장	55	부천
 
 |