728x90
수업내용
1교시 (09:30-10:20)
- popup_idCheck.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디 체크</title>
<script type="text/javascript">
function sendID() {
// 부모 창
window.parent.opener.document.kmemForm.kid.value=
// 자식 창
document.idform.id.value;
// 자식창을 스스로 닫는다.
window.self.close();
}
</script>
</head>
<body>
<%
String _kid = request.getParameter("kid");
System.out.println("_kid >>> : + _kid");
boolean bool = false;
if ("1234".equals(_kid)) {
bool = true;
}
String returnMsg = "";
String returnKid = "";
if (!bool) {
returnMsg = "사용 가능한 아이디 입니다.";
returnKid = _kid;
} else {
returnMsg = "이미 사용 중인 아이디 입니다.";
returnKid = "";
}
%>
<form name="idform" method="POST" action="<%= request.getRequestURI() %>">
<h4> <%= returnMsg %></h4>
<%= returnKid %><br>
<input type="hidden" name="id" value="<%= returnKid %>"><br>
<input type="submit" value="확인" onClick="sendID()">
</form>
</body>
</html>
- popup_1.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 아이디 체크
function idCheck() {
console.log("idCheck 함수 진입");
alert("idCheck 함수 진입");
var idVal = document.getElementById("kid").value
window.open("/KosMember/kos_script/popup_idCheck.jsp?kid=" + idVal,
"_blank" // "self" 면 팝업이 뜨지 않고 페이지에서 이동함
,"left=500,top=400,width=300,hiehgt=300"
,false);
}
</script>
</head>
<body>
<div>
<form name="kmemForm" id="kmemForm"
action="#"
method="POST">
<table border="1">
<tr>
<td colspan="2" align="center">
<font size="4" style="color:Blue;">KOSMO 108기</font>
<img src="/KosMember/img/img_mandoo/naruhodo.gif" width="25" height="25" alt="image">
</td>
</tr>
<tr>
<td class="mem">아이디</td>
<td>
<input type="text" name="kid" id="kid" placeholder="아이디 중복 체크" />
<input type="button" name="kidbtn" id="kidbtn"
value="popup_아이디중복확인" onclick="idCheck()"/>
</td>
</tr>
<tr>
<td class="mem">아이디</td>
<td>
<input type="text" name="kid_1" id="kid_1" placeholder="Ajax로 해보기" />
<input type="button" name="kidbtn_1" id="kidbtn_1" value="Ajax_아이디중복확인"/>
</td>
</tr>
<tr>
<td class="mem">패스워드</td>
<td>
<input type="text" name="kpw" id="kpw" placeholder="Ajax로 해보기" />
<input type="button" value="Ajax_비밀번호확인" id="pwCheck"/>
</td>
</tr>
<tr id="id9">
<td colspan="2">
<input type="button" value="보내기" onclick="kmemConfirm()"/>
<input type="reset" value="취소" />
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
- popup_idCheck.jsp ← “1234” 부분에 DB 연결해보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 커넥션 클래스 import -->
<%@ page import="a.b.c.common.KosConnectivity" %>
<!-- java.sql.* JDBC 클래스 import -->
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<!-- 깡통 클래스 import -->
<%@ page import="a.b.c.kos.mem.vo.MemVO" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디 체크</title>
<script type="text/javascript">
function sendID() {
// 부모 창
window.parent.opener.document.kmemForm.kid.value=
// 자식 창
document.idform.id.value;
// 자식창을 스스로 닫는다.
window.self.close();
}
</script>
</head>
<body>
<%
String _kid = request.getParameter("kid");
System.out.println("_kid >>> : + _kid");
MemVO mvo = null;
mvo = new MemVO();
mvo.setMid(_kid);
boolean bool = false;
// jdbc 연결 및 sql 사용학;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rsRs = null;
int nCnt = 0;
conn = KosConnectivity.getConnection();
String sqls = "SELECT COUNT(A.MNUM) NCNT FROM KOS_MEMBER A WHERE A.DELETEYN='Y' AND A.MID=?";
pstmt = conn.prepareStatement(sqls);
pstmt.clearParameters();
pstmt.setString(1, mvo.getMid());
rsRs = pstmt.executeQuery();
if (rsRs != null) {
while (rsRs.next()) {
nCnt = rsRs.getInt(1);
// nCnt = rsRs.getInt("NCNT"); // 컬럼 명, 컬럼 명 앨리어스
}
}
if (nCnt == 1) {
bool = true;
}
String returnMsg = "";
String returnKid = "";
if (!bool) {
returnMsg = "사용 가능한 아이디 입니다.";
returnKid = _kid;
} else {
returnMsg = "이미 사용 중인 아이디 입니다.";
returnKid = "";
}
%>
<form name="idform" method="POST" action="<%= request.getRequestURI() %>">
<h4> <%= returnMsg %></h4>
<%= returnKid %><br>
<input type="hidden" name="id" value="<%= returnKid %>"><br>
<input type="submit" value="확인" onClick="sendID()">
</form>
</body>
</html>
2교시 (10:30-11:20)
- OracleXmlTest_1.java
package a.b.c.test.xml;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class OracleXmlTest_1 {
// C:\00.KOSMO108\30.Web\eclipse_web_1_work\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\kosMember\kos_xml
public static final String XML_FILE_PATH = "C:\\00.KOSMO108\\30.Web\\eclipse_web_1_work\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\KosMember\\kos_xml";
// public static final String XML_FILE_PATH = "C:\\00.KOSMO108\\30.Web\\eclipse_web_1_work\\KosMember\\WebContent\\kos_xml";
public static final String XML_PROLOG = "<?xml version='1.0' encoding='UTF-8'?>"; // 선언부
public String getXml(final String tableName) throws Exception {
System.out.println("String tableName >>> : " + tableName);
Connection conn = null;
Statement stmt = null;
ResultSet rsRs = null;
ResultSetMetaData resultMeta = null;
int colCount = 0;
StringBuffer strBuffer = new StringBuffer(XML_PROLOG);
try {
conn = DBPropertyConn.getConnection();
stmt = conn.createStatement();
rsRs = stmt.executeQuery("SELECT * FROM " + tableName);
resultMeta = rsRs.getMetaData();
colCount = resultMeta.getColumnCount();
System.out.println(tableName + " 테이블 컬럼 카운트 >>> : " + colCount);
strBuffer.append("\n");
strBuffer.append("<" + tableName.toUpperCase() + ">");
strBuffer.append("\n");
while (rsRs.next()) {
strBuffer.append("<" + "ROW" + ">");
for (int i=0; i < colCount; i++) {
strBuffer.append("<" + resultMeta.getColumnName(i+1) + ">");
strBuffer.append(rsRs.getString(i+1));
strBuffer.append("</" + resultMeta.getColumnName(i+1) + ">");
strBuffer.append("\n");
}
strBuffer.append("</" + "ROW" + ">");
}
strBuffer.append("</" + tableName.toUpperCase() + ">");
strBuffer.append("\n");
} catch (SQLException e) {
System.out.println(" getXML() : " + e);
} finally {}
return strBuffer.toString();
}
public static boolean xmlParse(String fileName, String xmlVal) {
boolean bool = false;
try {
BufferedWriter bw = new BufferedWriter(
new FileWriter(OracleXmlTest_1.XML_FILE_PATH + "/" + fileName.toLowerCase() + ".xml"));
bw.write(xmlVal);
bw.flush();
bw.close(); // 무조건 닫아줘야 한다.
bool = true;
} catch(IOException e) {
System.err.println(e);
}
return bool;
}
public boolean makeXml(final String tableName) {
boolean bool = false;
try {
if (tableName.length() > 0) {
final String fileName = tableName;
String xmlVal = getXml(fileName);
System.out.println("Oracle String Data를 xml로 생성 >>> : \n" + xmlVal);
if (xmlVal !=null && xmlVal.length() > 0) {
bool = OracleXmlTest_1.xmlParse(fileName, xmlVal);
if (bool) {
System.out.println(OracleXmlTest_1.XML_FILE_PATH + " 디렉토리에 " + fileName + ".xml 파일이 잘 생성되었습니다. ");
} else {
System.out.println(" 파일이 생성되지 않았습니다. ");
}
}
} else {
System.out.println("java OracleXmlTest_1 테이블 이름");
}
} catch (Exception e) {
System.out.println("e.getMessage() >>> : " + e.getMessage());
}
return bool;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Scanner sc = new Scanner(System.in);
System.out.println("테이블 이름을 KEY-IN 하시오 >>> : " );
String tableName = sc.next();
OracleXmlTest_1 ot_1 = new OracleXmlTest_1();
if(tableName.length() > 0){
boolean bool = ot_1.makeXml(tableName);
}else{
System.out.println("java OracleXmlTest_1 테이블이름 ");
}
}catch(Exception e){
System.out.println("e.getMessage() >>> : " + e.getMessage());
}
}
}
- test_xml_table.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.io.BufferedReader" %>
<%@ page import = "java.io.InputStreamReader" %>
<%@ page import = "java.net.URL" %>
<%@ page import = "a.b.c.test.xml.OracleXmlTest_1" %>
<%
String tablename = request.getParameter("tablename");
OracleXmlTest_1 oxt_1 = new OracleXmlTest_1();
boolean bool = oxt_1.makeXml(tablename);
//bool = false;
if (!bool) return;
String strHtml = "";
String strLine = "";
String xmlFilename = tablename + ".xml";
try {
String strUrl = "http://localhost:8088/KosMember/kos_xml/"+xmlFilename;
BufferedReader br = new BufferedReader(
new InputStreamReader((new URL(strUrl))
.openConnection().getInputStream(),"UTF-8"));
while ((strLine = br.readLine()) != null){
strHtml += strLine;
}
System.out.println(strHtml);
br.close();
} catch(Exception e) {
throw e;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XML PARSING</title>
<!-- jQuery CDN 불러오기 -------------------------------------------->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var xmlText, xmlParser, xmlDoc;
xmlText = "<%= strHtml %>";
alert(xmlText);
xmlParser = new DOMParser();
xmlDoc = xmlParser.parseFromString(xmlText, "text/xml");
alert(xmlDoc); // [object XMLDocument]
$("#parseText").click(function(){
document.getElementById("text").innerHTML = xmlDoc;
console.log(xmlDoc);
});
$("#parseFind").click(function(){
document.getElementById("text").innerHTML = text;
console.log(text);
});
});
</script>
</head>
<body>
<h3>XML 데이터 파싱하기</h3>
<hr>
<button id="parseText">DOM Parser로 XML 파싱하기 </button>
<button id="parseFind">find() 함수로 파싱하기 </button>
<p id="text"></p>
</body>
</html>
- test_xml_table.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/KosMember/kos_xml/test_xml_table.jsp"
method="GET">
<input type="text" class="tablename" name="tablename" id="tablename" />
<input type="submit" value="보내기"/>
</form>
</body>
</html>
3교시 (11:30-12:20)
- test_xml_emp_1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.io.BufferedReader" %>
<%@ page import = "java.io.InputStreamReader" %>
<%@ page import = "java.net.URL" %>
<%@ page import = "a.b.c.test.xml.OracleXmlTest_1" %>
<%
String strHtml = "";
String strLine = "";
try {
String strUrl = "http://localhost:8088/KosMember/kos_xml/emp.xml";
BufferedReader br = new BufferedReader(
new InputStreamReader((new URL(strUrl))
.openConnection().getInputStream(), "UTF-8"));
while ((strLine = br.readLine()) != null) {
strHtml += strLine;
}
System.out.println(strHtml);
br.close();
} catch(Exception e) {
throw e;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XML PARSING</title>
<!-- jQuery CDN 불러오기 -->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var xmlText, xmlParser, xmlDoc;
xmlText = "<%= strHtml %>";
alert(xmlText);
xmlParser = new DOMParser();
xmlDoc = xmlParser.parseFromString(xmlText, "text/xml");
alert(xmlDoc);
$("#parseText").click(function(){
document.getElementById("text").innerHTML = xmlDoc;
var empno, ename, job, mgr, hiredate, sal, comm, deptno;
var nlist = xmlDoc.getElementsByTagName("ROW").length;
for (i=0; i < nlist; i++) {
empno = xmlDoc.getElementsByTagName("EMPNO")[i].childNodes[0].nodeValue;
ename = xmlDoc.getElementsByTagName("ENAME")[i].childNodes[0].nodeValue;
job = xmlDoc.getElementsByTagName("JOB")[i].childNodes[0].nodeValue;
mgr = xmlDoc.getElementsByTagName("MGR")[i].childNodes[0].nodeValue;
hiredate = xmlDoc.getElementsByTagName("HIREDATE")[i].childNodes[0].nodeValue;
sal = xmlDoc.getElementsByTagName("SAL")[i].childNodes[0].nodeValue;
comm = xmlDoc.getElementsByTagName("COMM")[i].childNodes[0].nodeValue;
deptno = xmlDoc.getElementsByTagName("DEPTNO")[i].childNodes[0].nodeValue;
console.log( empno
+ "," + ename
+ "," + job
+ "," + mgr
+ "," + hiredate
+ "," + sal
+ "," + comm
+ "," + deptno);
}
});
$("#parseFind").click(function(){
$(xmlText).find("ROW").each(function(){
var empno = $(this).find("EMPNO").text();
var ename = $(this).find("ENAME").text();
console.log(empno + "," + ename);
});
});
});
</script>
</head>
<body>
<h3>XML 데이터 파싱하기</h3>
<hr>
<button id="parseText">DOM Parser XML 파싱하기 </button>
<button id="parseFind">find() 함수로 파싱하기</button>
<p id="text"></p>
</body>
</html>
- test_parser_1.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>XML Parser</title>
<style type="text/css"></style>
<!--
XML DOM 노드
-------------------------
문서 노드(Document node) : 전체 XML 문서를 나타낸다.
엘리먼트 노드(Element node) : XML 엘리먼트를 나타낸다.
텍스트 노드(Text node) : XML 엘리먼트 내의 텍스트를 나타낸다.
속성 노드(Attribute node) : XML 엘리먼트 내의 속성을 나타낸다.
주석 노드(Comment node) : XML 문서 내의 주석을 나타낸다.
XML DOM 프로퍼티
-------------------------
nodeName : 노드의 이름
nodeValue : 노드의 값
nodeType : 노드의 유형
parentNode : 자식 노드의 부모 노드
childNodes : 부모 노드의 자식 노드. 노드의 배열이 반환됨
firstChild : 부모 노드의 첫 번째 자식
lastChild : 부모 노드의 마지막 자식
nextSibling : 다음 형제 노드
previousSibling : 이전 형제 노드
attributes : 노드의 속성, 속성 노드의 리스트가 반환됨
XML DOM 메서드
-------------------------
getElementsByTagName(name) : 지정한 태그 이름에 해당하는 모든 엘리먼트를 구해서 노드 배열을 반환한다.
appendChild(childNode) : 부모 노드에 자식 노드를 삽입한다.
removeChild(childNode) : 부모 노드에서 자식 노드를 제거한다.
XML DOM 노드 유형
-------------------------
nodeType명 nodeType값
Element 1
Attribute 2
Text 3
Comment 8
Document 9
XML DOM의 nodeName 프로퍼티
-------------------------
엘리먼트 노드의 nodeName : 태그이름
속성노드의 nodeName : 속성의 이름
텍스트노드의 nodeName : #text
문서노드의 nodeName : #document
XML DOM의 nodeValue 프로퍼티
-------------------------
엘리먼트 노드의 nodeValue : undefined
텍스트노드의 nodeValue : 텍스트
속성노드의 nodeValue : 속성 값
-->
<script>
function parseText() {
var xmlText, xmlParser, xmlDoc;
xmlText = "<country>"
+ "<name>korea</name>"
+ "<capital>seoul</capital>"
+ "<lang>eng</lang>"
+ "</country>"
xmlParser = new DOMParser();
xmlDoc = xmlParser.parseFromString(xmlText, "text/xml");
console.log("xmlDoc.nodeName >>> : " + xmlDoc.nodeName);
console.log("xmlDoc.nodeType >>> : " + xmlDoc.nodeType);
console.log("xmlDoc.documentElement.nodeName >>> : " + xmlDoc.documentElement.nodeName);
console.log("xmlDoc.documentElement.nodeType >>> : " + xmlDoc.documentElement.nodeType);
x = xmlDoc.documentElement.childNodes;
console.log("x >>> : " + x );
xlen = x.length;
console.log("xlen >>> : " + xlen );
for (i=0; i < xlen; i++){
console.log("x["+i+"].nodeName >>> : " + x[i].nodeName);
console.log("x["+i+"].nodeType >>> : " + x[i].nodeType);
console.log("x["+i+"].childNodes[0].nodeName >>> : " + x[i].childNodes[0].nodeName);
console.log("x["+i+"].childNodes[0].nodeType >>> : " + x[i].childNodes[0].nodeType);
}
}
</script>
</head>
<body>
<h3>문자열 파싱</h3>
<hr>
<button onclick="parseText()">파싱하기!</button>
<p id="text"></p>
</body>
</html>
4교시 (12:30-13:20)
- JNDI
JNDI (Java Naming and Directory Interface)
----------------------------------------------
디렉토리 서비스에서 제공하는 데이터 및 객체를 발견(discovery)하고 참고(lookup)하기 위한 자바API다.
Web Server는 Web 응용 프로그램의 이름 지정 환경에 대한 핸들 역할을 하는 개체를 반환합니다.
이 개체는 다시 java:comp/env 이름 공간용 하위 컨텍스트를 제공합니다.
각 Web 응용 프로그램은 자체의 이름 공간이 있습니다.
JNDI 조회 이름 연결된 참조
----------------------------------------
java:comp/env 응용 프로그램 환경 항목
java:comp/env/jdbc JDBC DataSource
java:comp/env/mail JavaMail 세션 연결 팩토리
java:comp/env/url URL 연결 팩토리 - context.xml ← 이 부분 추가
<Resource auth="Container"
maxActive="100"
maxIdle="30"
maxWait="10000"
type="javax.sql.DataSource"
name="jdbc/jndi_orclKSY00"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:orclKSY00"
username="scott"
password="tiger" />
- 활용법
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming.NamingException" %>
<%@ page import="javax.sql.DataSource" %>
<%
Context ct = new InitialContext();
DataSource ds = (DataSource)ct.lookup("java:comp/env/jdbc/Oracle11g_orclKOSMO00");
Connection conn = ds.getConnection();
%>
- xml_jndiTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JDBC 객체 import -->
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="javax.sql.DataSource" %>
<!-- JNDI 객체 import -->
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming. NamingException" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>
JNDI InitialContext<br>
JNDI : Java Naming and Directory Interface
</h3>
<hr>
<%
// Obtain our environment naming context
Context initCtx = new InitialContext();
out.println("initCtx >>> : " + initCtx + "<br>");
// initCtx의 lookup 메서드를 이용해서 "java:comp/env"에 해당하는 객체를 찾아서 evnCtx에 삽입
Context envCtx = (Context) initCtx.lookup("java:comp/env");
out.println("envCtx >>> : " + envCtx + "<br>");
// Look up our data source
// envCtx의 lookup 메서드를 이용해서 "jdbc/Oracle11g_orclKSY00"에 해당하는 객체를 찾아서 ds에 삽입
// name="jdbc/Oracle11g_orclKSY00"
DataSource ds = (DataSource)envCtx.lookup("jdbc/jndi_orclKSY00");
out.println("ds >>> : " + ds + "<br><hr>");
// getConnection 메서드를 이용해서 커넥션 풀로부터 커넥션 객체를 얻어내어 conn 변수에 저장
Connection conn = ds.getConnection();
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM EMP");
ResultSet rsRs = stmt.executeQuery();
while (rsRs.next()) {
out.println(rsRs.getString(1) + " ");
out.println(rsRs.getString(2) + " ");
out.println(rsRs.getString(3) + " ");
out.println(rsRs.getString(4) + " ");
out.println(rsRs.getString(5) + " ");
out.println(rsRs.getString(6) + " ");
out.println(rsRs.getString(7) + " ");
out.println(rsRs.getString(8) + " <br>");
}
%>
</body>
</html>
- xml_jndiTest_1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JDBC 객체 import -->
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="javax.sql.DataSource" %>
<!-- JNDI 객체 -->
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming.NamingException" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>
JNDI InitialContext <br>
JNDI : Java Naming and Directory Interface
</h3>
<hr>
<%
Context context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/jndi_orclKSY00");
// getConnection 메서드를 이용해서 커넥션 풀로부터 커넥션 객체를 얻어내어 conn 변수에 저장
Connection conn = ds.getConnection();
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM EMP");
ResultSet rsRs = stmt.executeQuery();
while (rsRs.next()) {
out.println(rsRs.getString(1) + " ");
out.println(rsRs.getString(2) + " ");
out.println(rsRs.getString(3) + " ");
out.println(rsRs.getString(4) + " ");
out.println(rsRs.getString(5) + " ");
out.println(rsRs.getString(6) + " ");
out.println(rsRs.getString(7) + " ");
out.println(rsRs.getString(8) + " <br>");
}
%>
</body>
</html>
5교시 (14:30-15:20)
- Spring 설정 파일로서의 xml
- xml 설정 파일을 만들어 클래스를 기계가 관리하도록 함
- spring3.pdf 참고
6교시 (15:30-16:20)
- TestClass.java
package a.b.c.test.xml;
import java.util.ArrayList;
public class TestClass {
public void test() {
System.out.println("a.b.c.test.xml.TestClass 클래스에 있는 test() 메소드입니다.");
System.out.println("Hello >>>>>>>>>>> ");
ArrayList<String> aList = new ArrayList<String>();
aList.add("신제현");
aList.add("김민");
aList.add("손준하");
aList.add("홍길동");
aList.add("김보연");
aList.add("하연재");
for (int i=0; i < aList.size(); i++) {
System.out.println(">>> : " + aList.get(i));
}
}
public static void main(String args[]){
TestClass tc = new TestClass();
tc.test();
}
}
- fileClass.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<testclass>
<test>a.b.c.test.xml.TestClass</test>
</testclass>
</ROOT>
- ReadXMLClass.java
package a.b.c.test.xml;
// DOM 만들기
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
// DOM 문서 파싱
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
public class ReadXMLClass {
public static final String XML_FILE_PATH = "C:\\00.KOSMO108\\30.Web\\eclipse_web_1_work\\KosMember\\WebContent\\kos_xml";
public static void main(String argv[]) {
String testClass = "";
try {
// Tomcat 서버에서 웹 서버(코요테) 위치에 있는 fileClass.xml 파일을
// Tomcat 서버가 설치된 로컬 경로에 있는 물리적 파일 위치를 찾아서
// java.io.File 객체로 읽는 것이다.
// java.io.File은 객체의 물리적 경로를 읽는 객체이다.
String xmlFilePath = ReadXMLClass.XML_FILE_PATH;
File fXmlFile = new File(xmlFilePath + "/fileClass.xml");
// 팩토리 디자인 패턴 : 형식 : xml 파일을 읽어서 파싱
// 물리적인 xml 파일을 xml 객체로 변환하기 위해서 팩토리 디자인 패턴을 이용한다.
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
// parse() 함수가 물리적인 xml 파일을 파싱해서 메모리에 xml 객체로 변환시킨다.
Document doc = dBuilder.parse(fXmlFile);
// xml 문서를 깨끗하게 만드세요
doc.getDocumentElement().normalize();
System.out.println("Root element : " + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("testclass");
System.out.println("-----------------------");
for (int temp=0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
testClass = getTagValue("test", eElement);
System.out.println("test : " + testClass);
}
}
try {
Class cla_1 = Class.forName(testClass);
TestClass classAction = (TestClass)cla_1.newInstance();
System.out.println(" classAction >>> : " + classAction);
classAction.test();
} catch (Exception e) {}
// catch (ClassNotFoundException e) {}
// catch (InstantiationException i) {}
// catch (IllegalAccessException il) {}
} catch (Exception e) {
System.out.println(e);
}
}
private static String getTagValue(String sTag, Element eElement) {
NodeList nList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
Node nValue = (Node)nList.item(0);
return nValue.getNodeValue();
}
}
7교시 (16:30-17:20)
- 다른 클래스를 불러와보기
- fileClass.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<testclass>
<test>a.b.c.test.xml.TestClass</test>
</testclass>
<!--
<testclass>
<test>java.util.ArrayList</test>
</testclass>
-->
<!--
<testclass>
<test>java.util.HashMap</test>
</testclass>
-->
</ROOT>
- ReadXMLClass.java
import java.util.ArrayList;
import java.util.HashMap;
// Class cla_1 = Class.forName(testClass);
// TestClass classAction = (TestClass)cla_1.newInstance();
// System.out.println(" classAction >>> : " + classAction);
// classAction.test();
// Class cla_1 = Class.forName(testClass);
// ArrayList classAction = (ArrayList)cla_1.newInstance();
// System.out.println(" classAction >>> : " + classAction);
// // classAction.test();
Class cla_1 = Class.forName(testClass);
HashMap classAction = (HashMap)cla_1.newInstance();
System.out.println(" classAction >>> : " + classAction);
// classAction.test();
8교시 (17:30-18:30)
- db_1.properties
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orclKSY00
username=scott
password=tiger
- Property_Read_1.java
package a.b.c.test.xml;
import java.io.Reader;
import java.util.Properties;
import org.apache.ibatis.io.Resources;
public class Property_Read_1 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String resource = "a/b/c/test/xml/db_1.properties";
Properties prop = new Properties();
try {
Reader rd = Resources.getResourceAsReader(resource);
prop.load(rd);
System.out.println(prop.getProperty("driver"));
System.out.println(prop.getProperty("url"));
System.out.println(prop.getProperty("username"));
System.out.println(prop.getProperty("password"));
} catch (Exception e) {}
}
}
- db_2.ini
driver=a.b.c
url=jdbc:oracle
username=ss
password=dd
- Property_Read_2.java
package a.b.c.test.xml;
import java.io.Reader;
import java.util.Properties;
import org.apache.ibatis.io.Resources;
public class Property_Read_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String resource = "a/b/c/test/xml/db_2.ini";
Properties prop = new Properties();
try {
Reader rd = Resources.getResourceAsReader(resource);
prop.load(rd);
System.out.println(prop.getProperty("driver"));
System.out.println(prop.getProperty("url"));
System.out.println(prop.getProperty("username"));
System.out.println(prop.getProperty("password"));
} catch (Exception e) {}
}
}
Notes
728x90