반응형
JSON 작업파일(JSONTest)
GitHub - chaSunil/FirstProject: 1차 프로젝트
1차 프로젝트. Contribute to chaSunil/FirstProject development by creating an account on GitHub.
github.com
제이슨 타입으로 데이터 출력하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
{
"size": 3,
"list":[
{"name":"홍길동","age":31,"tel":"010-111-1234"},
{"name":"이길동","age":32,"tel":"010-222-1234"},
{"name":"삼길동","age":33,"tel":"010-333-1234"}
]
}
Servlet 만들기 (json을 String, int, Array로 받기)
package action;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import org.json.JSONArray;
import org.json.JSONObject;
/**
* Servlet implementation class JSONParseAction
*/
@WebServlet("/json_parse.do")
public class JSONParseAction extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// {"name":"일길동","age":30,"hobby":["독서","낚시"]};
String json_str = "";
JSONObject json = new JSONObject("{\"name\":\"일길동\",\"age\":30,\"hobby\":[\"독서\",\"낚시\"]};");
String name = json.getString("name");
int age = json.getInt("age");
// JSON 배열 읽어오기
JSONArray hobbyArray = json.getJSONArray("hobby");
for(int i=0; i<hobbyArray.length(); i++) { // i=0, i=1
String hobby = hobbyArray.getString(i);
}
System.out.printf("이름:%s 나이:%d 취미:%s\n", name, age, hobbyArray);
// Dispatcher형식으로 호출
String forward_page = "result_json.jsp";
RequestDispatcher disp = request.getRequestDispatcher(forward_page);
disp.forward(request, response);
}
}
http안에 작성한 json 데이터를 url 주소를 받아와서 값을 가져오기
package action;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
/**
* Servlet implementation class JSONParseAction
*/
@WebServlet("/json_parse.do")
public class JSONParseAction extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<PersonVo> p_list = new ArrayList<PersonVo>();
try {
String str_url = "http://localhost:8080/2024_0709_JSONTest/person.jsp";
URL url = new URL(str_url);
// 이용하는 이유: 요청시 헤더 정보 전달(인증키)
URLConnection urlConn = url.openConnection();
InputStream is = urlConn.getInputStream();
// line 단위로 읽어온다.
BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
StringBuilder sb = new StringBuilder();
while(true) {
String data = br.readLine(); // line 단위로 읽어온다.
if(data==null) break;
sb.append(data+"\n");
}
// System.out.println(sb.toString());
// JSON Parsing
JSONObject json = new JSONObject(sb.toString());
int size = json.getInt("size");
JSONArray personArray = json.getJSONArray("list");
for(int i = 0; i<personArray.length(); i++) {
JSONObject person = personArray.getJSONObject(i);
// person = {"name":"홍길동","age":31,"tel":"010-111-1234"}
String name = person.getString("name");
int age = person.getInt("age");
String tel = person.getString("tel");
PersonVo vo = new PersonVo(name, age, tel);
p_list.add(vo);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// request binding
request.setAttribute("p_list", p_list);
// Dispatcher형식으로 호출
String forward_page = "result_json.jsp";
RequestDispatcher disp = request.getRequestDispatcher(forward_page);
disp.forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1" align="center">
<tr>
<th>이름</th>
<th>나이</th>
<th>전화번호</th>
</tr>
<!-- for(PersonVo vo : p_list) -->
<c:forEach var="vo" items="${ requestScope.p_list }">
<tr>
<td>${ vo.name }</td>
<td>${ vo.age }</td>
<td>${ vo.tel }</td>
</tr>
</c:forEach>
</table>
</body>
</html>
반응형
'데이터베이스↗' 카테고리의 다른 글
Mybatis library 설정과 사용 (0) | 2024.07.10 |
---|---|
json kakao open api 활용하기 (0) | 2024.07.09 |
xml openApi bookSearch Ex (0) | 2024.07.08 |
xml openApi 이용하기 (0) | 2024.07.08 |
xml로 데이터를 가져와서 parsing까지 하기 (0) | 2024.07.08 |