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
반응형
'study > Java' 카테고리의 다른 글
[Jsoup] 27. 두산베어스 정보 조회하기 (jsoup5.jsp) (0) | 2022.05.20 |
---|---|
[Jsoup] 27. Json형태를 table형태로 변경하여 출력하기 (jsoup4.jsp) (0) | 2022.05.20 |
[Jsoup] 27. KEB하나은행 환율정보 조회하기 (JSON형태) (jsoup2.jsp) (0) | 2022.05.19 |
[Jsoup] 27. 수출입은행 환율 정보 조회하기 (jsoup1.jsp) (0) | 2022.05.19 |
[Java] 36. Test2 풀이 (반복문을 이용하여 파일명을 입력받아서 해당 파일이 존재하면 해당파일명.bak 파일 복사하기) (0) | 2022.04.01 |