DB에 있는 sang데이터를 jsp에서 java를 사용하여 XML 형태로 받아와본다.
XML의 기본형태를 보면
<list>
<item>
<code price="30000">10</code>
<sang>js기초이해</sang>
</item>
<item>
<code>20</code>
<sang>js 응용</sang>
</item>
<item>
<code>10</code>
<sang>js고급</sang>
</item>
</list>
이와같은 형태로 작성되는 것을 확인.
JSP를 이용해 java와 XML를 같이 사용하여 DB데이터를 불러와본다.
DB를 사용하기 위해 자바에서 배웠던
Connection / PreparedStatement /ResultSet 객체를 이용했다.
<?xml version="1.0" encoding="UTF-8"?>
<%@ page language="java" contentType="text/xml; charset=UTF-8"
pageEncoding="UTF-8" import="java.sql.*"%>
<list> <%
Connection conn;
PreparedStatement pstmt;
ResultSet rs;
try {
// 1. mariaDB사에서 제공한 Driver 파일 로딩.
Class.forName("org.mariadb.jdbc.Driver");
} catch (Exception e) {
System.out.println("Driver 파일 로딩 실패");
return;
}
try {
conn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/test", "root", "pwd");
pstmt = conn.prepareStatement("select * from sangdata");
rs = pstmt.executeQuery();
while (rs.next()) {
%>
<item>
<code><%= rs.getString("code")%></code> //DB+JAVA+XML
<sang><%= rs.getString("sang")%></sang>
<su><%= rs.getString("su")%></su>
<dan><%= rs.getString("dan")%></dan>
</item>
<%
}
rs.close(); pstmt.close(); conn.close();
} catch (Exception e) {
System.out.println(e);
}
%>
</list>
DB 사용시 Driver파일을 사용하기 위해 프로젝트폴더의 webapp에 라이브러리를 복사 붙여넣기했다.
Class.forName으로 mariadb의 Driver파일을 로드하고,
getConnection->prepareStatement에서 sql문 작성->executeQuery로 결과 저장.
여기서 DB의 많은 데이터를 반복하여 받아오기위해 java+DB+xml이 함께 사용된다.
<% %>를 하여 java의 while문 사이에 xml Markup language를 사용했고
나중에 불러올때 사용할 임의의 이름들을 태그 형태로 지정했다.
<%= rs.getString("code")%>
: java를 이용하여 getString("데이터") 로 DB의 해당 데이터 정보를 반복하여 받아온 것.JSON의 기본형태를 확인해보자
{
"sangpum":
[
{"code": 100,"sang": "가방"},
{"code": 200,"sang": "핸드백"},
{"code": 300,"sang": "백팩"}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<%@ page language="java" contentType="application/json; charset=UTF-8"
pageEncoding="UTF-8" import="java.sql.*" import="java.sql.*"%>
{ "sangpum": [
<%
Connection conn;
PreparedStatement pstmt;
ResultSet rs;
String result = "";
try {
// 1. mariaDB사에서 제공한 Driver 파일 로딩.
Class.forName("org.mariadb.jdbc.Driver");
} catch (Exception e) {
System.out.println("Driver 파일 로딩 실패");
return;
}
try {
conn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/test", "root", "----");
pstmt = conn.prepareStatement("select * from sangdata");
rs = pstmt.executeQuery();
while (rs.next()) {
result += "{";
result += "\"code\":" + "\"" + rs.getString("code")+"\",";
result += "\"sang\":" + "\"" + rs.getString("sang")+"\",";
result += "\"su\":" + "\"" + rs.getString("su")+"\",";
result += "\"dan\":" + "\"" + rs.getString("dan")+"\"";
result += "},";
}
if(result.length()>0){
result = result.substring(0,result.length()-1); //마지막 , 제거
}
out.print(result); //자바 내에서 출력할때
rs.close(); pstmt.close(); conn.close();
} catch (Exception e) {
System.out.println(e);
}
%>
] }
먼저 했던 xml형식에서 JSON으로만 바뀐것이기 때문에 While문의 내용만 바뀌었다.