Version 1.0
문서 이력
2013-03-29 최초 작성 Ver 1.0
웹 프로젝트 진행 중 Java 클래스에서 WEB-INF 폴더 내 설정 XML 파일을 읽는 방법입니다.
구글링 해보니 보통 WEB-INF 폴더는 웹에서만 사용되기 때문에 설정파일은 Servlet 이나 JSP 내에서 핸들링을 한다고 하네요. 저는 그냥 편법으로 Java 클래스에서 바로 접근을 해 봤습니다.
XML 파일을 읽는 부분은 jdom 2.0.4 라이브러리를 사용했습니다.
실행 환경은 WebSphere v6.1 과 Tomcat v6.0 입니다.
웹 컨테이너에 따라 ClassLoader 경로 부분이나 실행 환경이 조금 틀린 것 같으니 그 외 WAS 를 사용하실 경우 안 될 수도 있겠네요.
우선 WebSphere v6.1 에서의 방법입니다.
Rational Application Developer(RAD) v7 툴을 사용하였습니다.
<샘플 코드 – WEB-INF/Config.xml>
<?xml version="1.0" encoding="UTF-8"?> <User> <UserID>tester</UserID> <Password>1234</Password> <Username>Scott</Username> </User>
|
<샘플 코드 – Test.java>
package test;
import java.util.List; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder;
public class Test { public static void run() { try { SAXBuilder builder = new SAXBuilder();
//builder.build 의 입력 파라미터는 URL 객체 //입력 파라미터에 [클래스명].class.getResource() 사용 Document doc = builder.build(Test.class.getResource("/WEB-INF/Config.xml"));
//WEB-INF/Config.xml 파일의 절대경로 출력 System.out.println(Test.class.getResource("/WEB-INF/Config.xml").getPath());
//Config.xml 내 내용 출력 Element root = doc.getRootElement(); List<Element> elements = root.getChildren();
for (Element element : elements) { System.out.println(element.getName() + " : " + element.getText()); } } catch (Exception e) { System.out.println("Error Occured : " + e); } } }
|
Java 클래스를 작성하고 이를 JSP 에서 실행시킵니다.
<샘플 코드 – NewFile.jsp>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <html> <head> <title>NewFile</title> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <meta name="GENERATOR" content="Rational Application Developer"> </head> <body> <% test.Test.run(); %> </body> </html>
|
<결과>
[13. 3. 29 10:56:19:654 KST] 00000046 SystemOut O /C:/Users/Administrator/IBM/rationalsdp7.0/workspace/.metadata/.plugins /org.eclipse.wst.server.core/tmp0/WebTestEAR.ear/WebTest.war/WEB-INF/Config.xml [13. 3. 29 10:56:19:654 KST] 00000046 SystemOut O UserID : tester [13. 3. 29 10:56:19:654 KST] 00000046 SystemOut O Password : 1234 [13. 3. 29 10:56:19:654 KST] 00000046 SystemOut O Username : Scott
|
Tomcat v6.0 에서의 방법입니다.
Eclipse Java EE IDE for Web Developers Indigo Service Release 2 툴을 사용했습니다.
<샘플 코드 – WEB-INF/Config.xml>
<?xml version="1.0" encoding="UTF-8"?> <User> <UserID>tester</UserID> <Password>1234</Password> <Username>Scott</Username> </User>
|
<샘플 코드 – Test.java>
package test;
import java.util.List; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder;
public class Test { public static void run() { try { //[클래스명].class.getResource("/") 로 클래스의 절대경로를 구함 String path = Test.class.getResource("/").getPath(); System.out.println(path);
//WEB-INF/Config.xml 경로로 변경 path = path.substring(0, path.length() - 1); System.out.println(path);
path = path.substring(0, path.lastIndexOf("/") + 1); System.out.println(path);
path = path + "Config.xml"; System.out.println(path);
SAXBuilder builder = new SAXBuilder();
//builder.build 의 입력 파라미터는 파일 경로 문자열 Document doc = builder.build(path);
//Config.xml 내 내용 출력 Element root = doc.getRootElement(); List<Element> elements = root.getChildren();
for (Element element : elements) { System.out.println(element.getName() + " : " + element.getText()); } } catch (Exception e) { System.out.println("Error Occured : " + e); } } }
|
Java 클래스를 작성하고 이를 JSP 에서 실행시킵니다.
<샘플 코드 – NewFile.jsp>
<%@page import="test.Test"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body> <% Test.run(); %> </body> </html>
|
<결과>
/C:/Users/Administrator/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0 /wtpwebapps/WebTest/WEB-INF/classes/ /C:/Users/Administrator/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0 /wtpwebapps/WebTest/WEB-INF/classes /C:/Users/Administrator/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0 /wtpwebapps/WebTest/WEB-INF/ /C:/Users/Administrator/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0 /wtpwebapps/WebTest/WEB-INF/Config.xml UserID : tester Password : 1234 Username : Scott
|
'웹 > Java' 카테고리의 다른 글
오라클 out 파라미터가 있는 Stored Procedure 사용하기 (0) | 2013.04.30 |
---|---|
일반 Java 프로젝트에서 라이브러리(jar) 추가하기 (0) | 2013.04.30 |
라이브러리 다운로드 사이트 (0) | 2013.04.30 |
JDOM 2.0.4 를 이용한 XML 읽기 쓰기 (0) | 2013.04.30 |
현재 날짜 시간을 원하는 날짜 형식으로 가져오기 (0) | 2013.03.27 |