230208 AJAX-DB연동 (JSP)

kangjuju·2023년 2월 8일
0

Acorn

목록 보기
14/15
post-thumbnail

jsp응용 XML + DB

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의 해당 데이터 정보를 반복하여 받아온 것.

jsp응용 JSON + 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문의 내용만 바뀌었다.

0개의 댓글