package oracle_db;
import java.sql.*;
public class DBConnect {
// driver(OJDBC), url, 계정, 비밀번호를 반드시 connection 해줘야 한다.
// url
static final String ORACLE_URL="jdbc:oracle:thin:@localhost:1521:XE";
// driver : 딱 1번만 실행.. 생성자 단에서 실행
String driver="oracle.jdbc.driver.OracleDriver";
public DBConnect(){
try{
Class.forName(driver);
System.out.println("오라클 드라이버 성공!!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("오라클 드라이버 실패!! "+e.getMessage());
}
}
// Connection
public Connection getConnection(){
Connection conn=null;
try {
conn= DriverManager.getConnection(ORACLE_URL,"scott","tiger");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("오라클 연결실패: url, 계정, 비밀번호 확인 요함 "+e.getMessage());
}
return conn;
// void return이 없다. 해당 method에 void가 아니기 때문에 return이 없으면 아래 중괄호에 오류가 난다.
}
// close 메서드 생성.. 총 4개
public void dbClose(ResultSet rs, Statement stmt, Connection conn){
try {
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
if(conn!=null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void dbClose(Statement stmt, Connection conn){ // ResultSet이 없는 이유는 출력이 필요 없기 때문
try {
if(stmt!=null) stmt.close();
if(conn!=null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void dbClose(ResultSet rs, PreparedStatement pstmt, Connection conn){ //PreparedStatement : 미완의.. 뭐라고?
try {
if(rs!=null) rs.close();
if(pstmt!=null) pstmt.close();
if(conn!=null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void dbClose(PreparedStatement pstmt, Connection conn){
try {
if(pstmt!=null) pstmt.close();
if(conn!=null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<%@page import="java.sql.SQLException"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle_db.DBConnect"%>
<%@ page language="java" contentType="text/xml; charset=UTF-8"
pageEncoding="UTF-8"%>
<data>
<%
DBConnect db=new DBConnect();
Connection conn=db.getConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="select * from team order by num";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try{
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
String num=rs.getString("num");
String name=rs.getString("name");
String addr=rs.getString("addr");
String writeday=sdf.format(rs.getTimestamp("writeday"));
%>
<team num="<%=num%>">
<name><%=name %></name>
<addr><%=addr %></addr>
<writeday><%=writeday %></writeday>
</team>
<%}
} catch(SQLException e){
} finally{
db.dbClose(rs, pstmt, conn);
}
%>
</data>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle_db.DBConnect"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
DBConnect db=new DBConnect();
Connection conn=db.getConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="select * from info order by num";
String s="[";
try{
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
String num=rs.getString("num");
String name=rs.getString("name");
String hp=rs.getString("hp");
String age=rs.getString("age");
String photo=rs.getString("photo");
s+="{";
s+="\"num\":"+num+",\"name\":\""+name+"\",\"hp\":\""+hp+"\",\"age\":"+age+",\"photo\":\""+photo+"\"";
s+="},";
// "num":1,"name":"길동","hp":"010-22..."
}
// 마지막 컴마 제거
s=s.substring(0,s.length()-1);
} catch(SQLException e) {
} finally{
db.dbClose(rs, pstmt, conn);
}
s+="]";
%>
<%=s%>
<?xml version="1.0" encoding="UTF-8"?>
<%@page import="java.sql.SQLException"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle_db.DBConnect"%>
<%@ page language="java" contentType="text/xml; charset=UTF-8"
pageEncoding="UTF-8"%>
<data>
<%
DBConnect db=new DBConnect();
Connection conn=db.getConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="select * from myfood order by num";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try{
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
String num=rs.getString("num");
String name=rs.getString("foodname");
String photo=rs.getString("foodphoto");
int price=rs.getInt("price");
int cnt=rs.getInt("cnt");
%>
<myfood num="<%=num%>">
<foodname><%=name %></foodname>
<foodphoto><%=photo %></foodphoto>
<price><%=price %></price>
<cnt><%=cnt %></cnt>
</myfood>
<%}
} catch(SQLException e){
} finally{
db.dbClose(rs, pstmt, conn);
}
%>
</data>
<%@page import="org.json.simple.JSONObject"%>
<%@page import="java.sql.SQLException"%>
<%@page import="org.json.simple.JSONArray"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle_db.DBConnect"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
DBConnect db=new DBConnect();
Connection conn=db.getConnection();
Statement stmt=null;
ResultSet rs=null;
String sql="select * from shop order by num";
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
JSONArray arr=new JSONArray();
while(rs.next()){
String num=rs.getString("num"); // ("json에서 기입될 num",위에서 지정해준 변수)
String sangpum=rs.getString("sangpum");
String color=rs.getString("color");
String price=rs.getString("price");
String imgname=rs.getString("imgname");
JSONObject ob=new JSONObject();
ob.put("num",num); // ("",)
ob.put("sangpum",sangpum);
ob.put("color",color);
ob.put("price",price);
ob.put("imgname",imgname);
// array에 추가
arr.add(ob);
}%>
<%=arr.toString() %> <!-- Object 형식으로 넣어준 변수값을 출력 가능한 문자열로 변경해준다. -->
<%}catch(SQLException e){
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://fonts.googleapis.com/css2?family=East+Sea+Dokdo&family=Moirai+One&family=Nanum+Pen+Script&family=Orbit&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
<style>
#show{
width: 250px;
}
</style>
</head>
<body>
<button type="button" id="btn1" class="btn btn-outline-info">xml 읽기 (myfood)</button>
<button type="button" id="btn2" class="btn btn-outline-success">json 읽기</button>
<div id="show">출력하는 곳</div>
<script>
$("#btn1").click(function(){
$("#show").empty();
var s="";
$.ajax({
type:"get",
url:"ex01_foodtoxml.jsp",
dataType:"xml",
success:function(res){
$(res).find("myfood").each(function(idx,ele){
s+="<div class='alert alert-info'>";
s+="No: "+$(ele).attr("num")+"<br>";
s+="음식이름 :"+$(ele).find("foodname").text()+"<br>";
s+="사진: <img src='"+$(ele).find("foodphoto").text()+"' style='width: 50px; background-color: yellow; border-radius: 10px;'><br>";
s+="가격: "+$(ele).find("price").text()+"<br>";
s+="수량: "+$(ele).find("cnt").text()+"<br>";
s+="</div>";
})
$("#show").html(s);
}
})
})
$("#btn2").click(function(){
$("#show").empty();
var s="";
$.ajax({
type:"get",
url:"ex01_shoptojson.jsp",
dataType:"json",
success:function(res){
s="<table class='table table-bordered' style='width:700px'>";
s+="<tr>";
s+="<th>번호</th><th>상품명</th><th>색상</th><th>이미지</th><th>가격</th>";
s+="</tr>"
$.each(res,function(i,e){
s+="<tr>";
s+="<td>"+e.num+"</td>";
s+="<td>"+e.sangpum+"</td>";
s+="<td>"+e.color+"<br>"+"<div class='box' style='background-color:"+e.color+"; width: 50px; border-radius: 50px;'></div></td>"
var img=e.imgname;
s+="<td><img src='"+img+"' style='width: 50px; background-color: yellow; border-radius: 10px;'></td>";
s+="<td>"+e.price+"</td>";
s+="</tr>";
})
s+="</table>";
$("#show").html(s);
}
})
})
</script>
</body>
</html>
DB 파일
json 파일
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="org.json.simple.JSONObject"%>
<%@page import="org.json.simple.JSONArray"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle_db.DBConnect"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
DBConnect db=new DBConnect();
Connection conn=db.getConnection();
Statement stmt=null;
ResultSet rs=null;
String sql="select * from myfriend order by num";
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
JSONArray arr=new JSONArray();
while(rs.next()){
String num=rs.getString("num");
String fname=rs.getString("fname");
String fhp=rs.getString("fhp");
String faddr=rs.getString("faddr");
String gaipday=sdf.format(rs.getTimestamp("gaipday"));
JSONObject ob=new JSONObject();
ob.put("num",num);
ob.put("fname",fname);
ob.put("fhp",fhp);
ob.put("faddr",faddr);
ob.put("gaipday",gaipday);
// 배열에 추가
arr.add(ob);
}%>
<%=arr.toString() %>
<%} catch(SQLException e) {
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://fonts.googleapis.com/css2?family=East+Sea+Dokdo&family=Moirai+One&family=Nanum+Pen+Script&family=Orbit&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
<style>
#result{
font-family: Nanum Pen Script;
font-size: 15pt;
background-color: lightgoldenrodyellow;
width: 300px;
}
</style>
</head>
<body>
<button type="button" id="btn1" class="btn btn-outline-info">과제 가즈아!</button>
<div id="result">과제출력</div>
<script>
$("#btn1").click(function(){
$("#result").empty();
var s="";
$.ajax({
type:"get",
url:"ex02_friendToJson.jsp",
dataType:"json",
success:function(res){
$.each(res,function(idx,ele){
s+="<div style='float: left; padding:10px; margin: 5px; background-color: lightpink; width: 200px; border-radius: 10px; border: 1px solid gray;'>";
s+="No. :"+ele.num+"<br>";
s+="이름 :"+ele.fname+"<br>";
s+="핸드폰번호 :"+ele.fhp+"<br>";
s+="주소 :"+ele.faddr+"<br>";
s+="가입날짜: "+ele.gaipday+"<br>";
s+="</div>";
})
$("#result").html(s);
}
})
})
</script>
</body>
</html>
초기화면
과제 가즈아! 클릭 시 (사진이 길이져서 잘랐음)