[jsp] Ajax / JSON / 라이브러리setInterval() / 실시간 검색어

seulki·2022년 10월 20일
0

jsp

목록 보기
43/51
post-thumbnail
post-custom-banner

🎈 JSON이란?

  • 경량화된 데이터 교환 형식.
    서로 다른 언어들 간 데이터를 주고 받을 수 있도록 만들어진
    텍스트 기반의 형식.
  • 프로그래밍 언어가 아닌 데이터 표기 방법 중 하나이고,
    기본적으로 name:value 형태의 구조를 가지고 있다.


🗝️ json 라이브러리 설치하기

json 라이브러리!

  • 첫번 째 클릭하여 설치!

  • 이클립스 추가!


🎈 json_test.jsp

<%@ 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>
</head>
<body>

	<script>
	let xhr = new XMLHttpRequest();
	xhr.open("GET", "data.json", true);
	xhr.send();
	xhr.onreadystatechange = function() {
		if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200){
			let obj = JSON.parse(xhr.responseText);
			alert(obj.count);
			alert(obj.result);
		}
}
	</script>
</body>
</html>
  • 응답에 대한 값은 xhr.responseText 여기에 담겨있다.
  • 이 응답 값은 data.json에서 처리된 모든 데이터가 담겨있기 때문에,
    필요한 부분의 데이터만을 가져오려면 JSON.parse() 메서드를 사용해야 한다.


🎈 data.json

{
	"result" : "success",
	"count"  :	50
}




🎈 data2.json

{
	"search_word" :[
		{"rank":"1", "name" : "코로나"},
		{"rank":"2", "name" : "비트코인"},
		{"rank":"3", "name" : "JSP"},
		{"rank":"4", "name" : "JAVA"},
		{"rank":"5", "name" : "웹개발"}
	]
}


🎈 json_test2.jsp

<%@ 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>
</head>
<body>
	<h1>Ajax를 이용해 실시간 순위 나타내기</h1>
	<table border="1">
		<tr>
			<th>실시간 검색 순위</th>
			<th>키워드</th>
		</tr>
		<tr>
			<td id="td1">순위</td>
			<td id="td2">키워드</td>
		</tr>
	</table>
	<script>
    window.onload = function() {
	//HTML 이 다 load가 완료 됐을 때 실행
	
	let td1 = document.getElementById("td1");
	let td2 = document.getElementById("td2");
	
	let xhr = new XMLHttpRequest();
	xhr.open("GET", "data2.json", true);
	xhr.send();
	xhr.onreadystatechange = function() {
		if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200){
			let obj = JSON.parse(xhr.responseText);
			
			let i = 0;
			setInterval(function () {
				if(i == obj.search_word.length){
					i = 0;
				}
				td1.innerHTML = obj.search_word[i].rank;
				td2.innerHTML = obj.search_word[i].name;
				i++;				
			}, 2000);
			
		}
   }
}      
  • setInterval() 함수를 이용하여 2초마다 반복 실행




🎈 JSON 라이브러리 사용!

  package com.koit.wweb.json;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class Json_test {

	public static void main(String[] args) {

		// JSON 객체 생성
		JSONObject in = new JSONObject();
		in.put("name", "자바학생");
		in.put("gender", "남자");
		in.put("age", "10");
  		// {"name" : "자바학생", "gender" : "남자", "age" : "10"}
		
		JSONObject out = new JSONObject();
		out.put("in", in);
  		// { "in" : {"name" : "자바학생", "gender" : "남자", "age" : "10"} }
		//출력
		System.out.println(out.toJSONString());
		
		String json = out.toJSONString();
		
  		// 파싱
		JSONParser parser = new JSONParser();
		JSONObject p_out = null;
		JSONObject p_in = null;
		String name;
		String gender;
		int age;
		
		try {
  			// "in"을 기준으로 자름
			p_out = (JSONObject) parser.parse(json);
  			// 잘려진 "in"을 기준으로 
  			// "name","gender","age" 값에 접근 가능
			p_in = (JSONObject) p_out.get("in");
			
			name = (String) p_in.get("name");
			gender = (String) p_in.get("gender");
			age = Integer.parseInt( (String) p_in.get("age"));
			
			System.out.println(name + gender + age);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}
  • 자바 단에서 데이터 가공 가능하다.
profile
웹 개발자 공부 중
post-custom-banner

0개의 댓글