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

제이쿼리 Ajax 사용하기

sungw00 2023. 3. 8. 23:15
728x90

제이쿼리 Ajax를 사용해 서블릿과 비동기 방식으로 데이터를 송수신하는 예제

1. ajax1.html 파일 작성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ajax 연습1</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
	function fn_process() {
		$.ajax({
			type: "get", <!-- get 방식으로 전송 -->
			dataType: "text", <!-- 응답 데이터를 텍스트로 지정 -->
			async: false, <!-- false인 경우 동기식으로 처리 -->
			url: "http://localhost:8090/pro16/ajaxTest1", <!-- 전송할 서블릿을 지정 -->
			data: {param:"Hello,jquery"}, <!-- 서버로 매개변수와 값을 설정 -->
            <!-- 전송과 응답이 성공했을 경우의 작업을 설정 -->
			success: function (data, textStatus) {  
				$('#message').append(data); <!-- 서버 응답 메시지를 <div> 엘리먼트에 표시 -->
			},
            <!-- 작업 중 오류가 발생했을 경우에 수행할 작업을 설정 -->
			error: function (data, textStatus) {
				alert("에러가 발생했습니다.");
			},
            <!-- 완료 시 수행할 작업을 설정 -->
			complete: function (data, textStatus) {
				alert("작업을 완료했습니다.");
			}
		});
	}
</script>
</head>
<body>
	<input type="button" value="전송하기" onClick="fn_process()" /><br><br>
	<div id="message"></div>
</body>
</html>

제이쿼리 Ajax 기능을 이용해 서블릿에 매개변수 이름 param으로 "Hello, jquery"를 서버로 전송하면 서버로부터 받은 메시지를 id가 message인 <div> 태그에 표시한다.

 

2. 클라이언트에서 Ajax로 메시지를 보내면 이를 처리하는 AjaxTest1.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;

@WebServlet("/ajaxTest1")
public class AjaxTest1 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 param = (String)request.getParameter("param"); // getParameter() 메서드를 이용해 ajax로 전송된 매개변수를 가져옴
		System.out.println("param = " + param);
        
        // PrintWriter의 print() 메서드를 이용해 브라우저에 응답 메시지를 보냄
		PrintWriter writer = response.getWriter(); 
		writer.print("안녕하세요! 서버입니다.");
	}

}

브라우저에서 매개변수 이름인 param으로 데이터를 보내면 getParameter( )를 이용해 데이터를 가져오고, 서블릿에서는 PrintWriter의 print( ) 메서드의 인자로 응답 메시지를 브라우저에 보낸다.

 

3. http://localhost:8090/pro16/test03/ajax1.html 요청 후 전송하기 클릭하면 작업을 완료했다는 메시지가 출력되고, 서버에서 ajax로 전송된 데이터를 <div> 엘리먼트에 표시한다.

서버의 서블릿에서는 ajax로 전달된 매개변수 값을 콘솔로 출력한다.

728x90