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