자바(Java)/JAVA 2EE

JSP를 사용하여 XML 문서 제작하기

본클라쓰 2010. 4. 27. 14:17

JSP를 사용하여 XML 문서 제작하기

 

 JSP를 사용하여 XML문서를 제작하는 방법으로 XML에 대한 설명을 따로 하지 않는다. JSP를 사용하여 XML문서를 제작하기 위해서는 문서 선언은 XML문서 선언으로 하고 JSP 콘텐츠 타입을 'text/xml'로 지정하며 파일 확장자는 .jsp를 사용한다. 또한, XML 문서 DTD나 스키마는 따로 제작할 필요가 없다다. JSP를 사용하여 제작한 XML 문서는 다음과 같다.

 

xml.jsp

<?xml version="1.0" encoding="UTF-8"?>
<%@ page contentType="text/xml" %>

<note>
 <name>${name}</name>
 <age>${age}</age>
 <content>${data}</content>
</note>

 

 이 때, 주의할 점은 xml 문서 선언이 JSP 콘텐츠 타입 선언보다 먼저 나와야 한다. 만약 xml 문서 선언이 JSP 콘텐츠 타입 선언보다 늦게 나오면 xml 문서로 인식이 안될 수 있다. 위에 XML문서에 실질적인 데이터를 삽입하는 객체는 아래와 같다.

 

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

 

public class TestAction extends Action {
 
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
  
        response.setCharacterEncoding("utf-8");  // Ajax 사용시 한글 사용을 위한 응답 인코딩 변경
  
        request.setAttribute("name", "홍길동");
        request.setAttribute("age", 20);
        request.setAttribute("data", "XML 참 쉽죠잉~~");
  
        return mapping.findForward("test");
    }
}

 

 

Ajax를 사용하여 XML 데이터를 받는 페이지

<%@ page 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>:::This is Test page:::</title>
<script type="text/javascript">
function loadXMLDoc(url){
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else {// code for IE6, IE5

        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
 
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
 
    xmlhttp.onreadystatechange=function(){
        txt="";
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            xmlDoc=xmlhttp.responseXML;
            x=xmlDoc.getElementsByTagName("name");
            txt = txt+x[0].firstChild.nodeValue;
        }
        document.getElementById('testArea').innerHTML=txt;
    };
 
}
</script>
</head>


<body>
<button value="테스트" onclick="loadXMLDoc('/service/test/')">테스트</button>
<div id="testArea">테스트 영역</div>
</body>
</html>