*XML( eXtensible Markup Language)
-프로그램의 환경설정용사용, 이종언어간 데이터 전달용.
이종언어:
C언어와 java언어간에 데이터전달
Java와 JavaScript언어간 데이터전달
Java와 PyThon언어간의 데이터 전달
- HTML과 다르게 태그가 정해져 있지 않다.( 개발자가 상황에 맞게 태그를 정의해서 사용)
- SGML에서 생성되었고, node( 태그 )를 사용자가 마음대로 선언할 수 있는 마크업 언어.
- 연산의 기능이 없다.
- 작성규칙을 지키지 않으면 error가 발생.
- XML, DTD, XSLT( XSL )로 구성될 수 있다.
Well-formed 문서(적격문서) : XML하나만 존재하며, 작성규칙만 준수하여 제작하는 XML
Valid문서(유효문서 ) : XML과 DTD가 함께 존재하며, DTD를 준수하여 제작하는 XML
*XML작성규칙
- 대.소문자를 구분한다.
- 시작노드와 끝 노드는 반드시 짝으로 나와야한다. ( <시작></끝> )
- 최상위 부모노드( root node, 근노드)는 반드시 하나만 존재.
- 속성은 공백으로 구분이되어야 한다.
- 선언부는 공백 없이 첫줄에서만 작성되어야한다.
*문서형식)
<?xml version=“1.0” encoding=“UTF-8” standalone=“DTD사용여부” ?>
<최상위부모노드>
<자식노드들……/>
</최상위부모노드>
*주석
<!--
한줄 주석 또는 여러줄 주석
-->
DB Table 예시
<?xml version=“1.0” encoding=“UTF-8”?>
<depts>
<dept>
<deptno>10</deptno>
<dname>ACCOUNTING</dname>
<loc>NEW YORK</loc>
</dept>
<dept>
<deptno>20</deptno>
<dname>개발부</dname>
<loc>서울</loc>
</dept>
.
.
</depts>
*XML Parser
- XML 문서를 자르거나, 생성하는 일을 할 수 있는 도구.
- SAX( Simple API XML)방식, DOM(Document Object Model)방식 Parser존재
*JDOM Parser
-DOM방식과 SAX방식을 혼합한 Parser
-jdom.org에서 다운.
*Parser를 사용한 XML생성
1.XML 문서객체 생성
Document doc=new Document();
2. 최상위 부모노드 생성
Element rootNode=new Element(“노드명”);
Element rootNode=new Element(“root”);
3.자식 노드 생성
Element msgNode=new Element(“msg”);
노드의 값 설정
msgNode.setText(“안녕”);
4.배치
노드명.addContent( 배치할노드명)
rootNode.addContent( msgNode );
*XML문서객체에 최상위 부모노드 배치
doc.addContent( rootNode );
5.생성된 XML을 출력.
XMLOutputter xout=new XMLOutputter( Format.getPrettyFormat() );
xout.output( 문서객체, 출력스트림);
Console 출력 : System.out
File 출력 : FileOutputStream
Web browser출력 : out ( JSPWriter 내장객체 )
*JDOM Parser를 사용한 XML Parsing
-XML node를 찾고, node 사이에 값을 얻는 것.
<name>이장훈</name>
사용법)
1.Builder 생성 – XML을 읽어 들여 객체로 생성하는 클래스
SAXBuilder builder=new SAXBuilder();
2.XML과 연결하여 XML문서객체(Document)를 받는다.
Document doc=builder.build( );
Local =>builder.build( new File(“절대경로”)); // Local에 존재하는 XML얻기
-프로그램의 환경설정을 XML에서 수행하고 읽어들이기위해서
Web =>builder.build(new java.net.URL(“URL”)); //Web server에 존재하는 XML얻기
-데이터를 얻기 위해서 사용
3.최상위 부모노드 얻기
Element rootNode=doc.getRootElement();
4. 자식노드 얻기.
자식이 하나인 경우
Element subNode=rootNode.getChild(“노드명”);
자식이 여러 개인 경우
List<Element> subNodes=rootNode.getChildren(“노드명”);
5. 노드의 값 얻기
node명.getText();
*자식노드가 여러 개인 경우
List<Element> list=rootNode.getChildren(“노드명”);
for( Element deptNode : list){
자식노드를 받는다.
Element deptnoNode=deptNode.getChild(“deptno”);
Element dnameNode=deptNode.getChild(“dname”);
Element locNode=deptNode.getChild(“loc”);
//parsing
node명.getText();
}
*이름 데이터를 보내기
XML
<?xml version=“1.0” encoding=“UTF-8”?>
<root>
<name>이름</name>
</root>
*jQuery XML Parsing
- jQueryObject의 find 함수로 노드를 찾고, parsing 수행한다.
*Framework
- 자주 사용될 기능들을 미리 구현해 놓은 것.( 생산성 향상 )
- 배포는 .jar 수행
- 제공되는 기능을 개발자가 상황에 맞게 수정하여 사용한다.
- 생명주기를 개발자가 관리하지 않는다. ( new를 최소한다. )
- 반조립 형태.
- 최소한의 품질 보장을 받기 위해서 프레임워크를 도입.
- Spring, MyBatis, Struts, any framework, Lafj, DF Framework,,,,
*Library
- 자주 사용될 기능들을 미리 구현해 놓은 것.( 생산성 향상 )
- 배포는 .jar 수행
- 제공되는 기능을 그대로 사용한다.
- 생명주기를 개발자가 관리를 한다. ( new를 개발자가 한다. )
'JSP' 카테고리의 다른 글
[JSP] Pagination, AJAX File Upload, 다운로드 (0) | 2025.05.23 |
---|---|
[JSP] 사용자 인증 게시판, List만들기, 검색 조회 (0) | 2025.05.15 |
[JSP] 웹 동작방식 동기식, 비동기식, JSONObject (0) | 2025.05.13 |
[JSP] useBean, scope, EL, web parameter, JSTL (0) | 2025.05.07 |
[JSP] redirect, cookie, session (0) | 2025.04.29 |