웹 개발 기초/자바 웹을 다루는 기술

제이쿼리 Ajax XML 데이터 연동하기

sungw00 2023. 3. 9. 00:47
728x90

Ajax 응답 시 도서 정보를 XML로 전달받아 출력하는 예제

1. ajax2.html 파일 작성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>도서 정보 출력창</title>
<script type="text/javascript">
	function fn_process() {
		$.ajax({
			type:"post",
			async:false,
			url:"http:localhost:8090/pro16/ajaxTest2",
			dataType:"xml", <!-- 데이터를 XML 형태로 받음 -->
			success:function (info, textStatus) {
				$(info).find("book").each(function() {
                	<!-- 전송된 XML 데이터에서 엘리먼트 이름으로 데이터를 가져옴 -->
					var title=$(this).find("title").text();
					var writer=$(this).find("writer").text();
					var image=$(this).find("image").text();
                    <!-- id가 bookInfo인 <div> 엘리먼트에 도서 정보를 표시 -->
					$("#bookInfo").append(
							"<p>" +title+ "</p>" +
							"<p>" +writer+ "</p>" +
							"<image src=" +image+ "/>" 
					);
				});
			},
			error:function(data,textStatus){
               alert("에러가 발생했습니다.");
            },
            complete:function(data,textStatus){
               //alert("작업을 완료 했습니다");
            }
		});
	}
</script>
</head>
<body>
	<div id="bookInfo"></div>
	<input type=button value="도서정보 요청"  onclick="fn_process()">
</body>
</html>

 

2. AjaxTest2.java 클래스 파일 작성

package sec01.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AjaxTest2
 */
@WebServlet("/ajaxTest2")
public class AjaxTest2 extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}

	private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		String result = "";
		PrintWriter writer = response.getWriter();
        // 도서 정보를 XML로 작성한 후 클라이언트로 전송
		result="<main><book>"+
				"<title><![CDATA[초보자를 위한 자바 프로그래밍]]></title>" +
				"<writer><![CDATA[인포북스 저 | 이병숭]]></writer>" +
				"<image><![CDATA[http://localhost:8090/pro16/image/image1.jpg]]></image>" + // pro16으로 접근 시 webapp 하위 image 폴더의 image1.jpg를 표시
				"</book>"+
				"<book>"+
				"<title><![CDATA[모두의 파이썬]]></title>" +
				"<writer><![CDATA[길벗 저 | 이승찬]]></writer>" +
				"<image><![CDATA[http://localhost:8090/pro16/image/image2.jpg]]></image>" +
				"</book></main>";
				System.out.println(result);
				writer.print(result);
	}	
}

 

3. http://localhost:8090/pro16/test03/ajax2.html 요청 후 도서정보 요청 클릭

도서 정보와 이미지가 출력된다.

 

728x90