본문 바로가기
study/Java

[Jsoup] 27. 수출입은행 데이터 형태를 변경하여 출력하기 (jsoup3.jsp)

by 금이패런츠 2022. 5. 20.
728x90
반응형

jsoup3.jsp

<%@page import="org.jsoup.nodes.Element"%>
<%@page import="org.jsoup.select.Elements"%>
<%@page import="org.jsoup.Jsoup"%>
<%@page import="java.io.IOException"%>
<%@page import="org.jsoup.nodes.Document"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Arrays"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsoup1/src/main/webapp/jsoup3.jsp --%>
<%--
	수출입은행 환율정보의 형태를 변경하여 출력하기
 --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>수출입은행 데이터 형태를 변경하여 출력하기</title>
<style type="text/css">
	table, td, th {border:2px solid grey; border-collapse:collapse;}
</style>
</head>
<body>
<%
	String url = "https://www.koreaexim.go.kr/wg/HPHKWG057M01";
	Document doc = null;
	List<List<String>> trlist = new ArrayList<List<String>>();
	List<String> title = Arrays.asList("전신환받으실때","전신환보내실때","매매기준율","장부가격","중개매매기준율","중개장부가격");
	try {
		doc = Jsoup.connect(url).get(); //환율 정보를 보여주는 페이지의 html 데이터 수신
		Elements trs = doc.select("tr"); //tr 태그들 목록
		for(Element tr : trs) {
			//tr : tr 태그 한개
			List<String> tdlist = new ArrayList<String>();
			Elements tds = tr.select("td"); //tr 태그의 하위 태그 중 td 태그들 목록
			for(Element td : tds) {
				tdlist.add(td.html());
			}
			trlist.add(tdlist);
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
	pageContext.setAttribute("trlist", trlist); //JSTL 사용을 위해 속성 등록
	pageContext.setAttribute("title", title); //JSTL 사용을 위해 속성 등록
%>
<table>
	<c:forEach items="${trlist}" var="tdlist">
		<c:forEach items="${tdlist}" var="td" varStatus="stat">
			<c:choose>
			
				<c:when test="${stat.index % 8 == 0}"> <%-- 통화코드. tdlist의 첫번째 요소 --%>
						<tr>
							<td rowspan="6">${td}</td>
				</c:when>
				<c:when test="${stat.index % 8 == 1}"> <%-- 통화명. tdlist의 두번째 요소 --%>
						<td rowspan="6">${td}</td>
				</c:when>
				<c:when test="${stat.index % 8 == 2}"> <%-- 통화코드 시작 tdlist의 세번째 요소 --%>
						<td>${title[0]}</td> <%-- <%= title.get(0) %> : jstl에서는 List 객체를 첨자(인덱스) 사용이 가능함 --%>
						<td>${td}</td>
						</tr>
				</c:when>
			
				<c:otherwise>
					<tr>
						<td>${title[stat.index - 2]}</td>
						<td>${td}</td>
					</tr>
				</c:otherwise>
			</c:choose>
		</c:forEach>
	</c:forEach>
</table>
</body>
</html>
728x90
반응형