본문 바로가기

웹 - Ajax

웹 - Ajax - 계산기 예제

)jsp

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> 

<script type="text/javascript">
	const regular_num = /^\d{1,4}$/;

	// jQuery 초기화
	$(document).ready(function(){	
		// 결과보기 버튼 클릭되면
		$("#btn-result").click(function(){
			let su1 = $("#su1").val();
			let su2 = $("#su2").val();
			
			// 정규식 체크
			if(regular_num.test(su1)==false) {
				alert('1~4자리 숫자만 입력하세요');
				$("#su1").val("");
				$("#su1").focus();
				return;
			}
			if(regular_num.test(su2)==false) {
				alert('1~4자리 숫자만 입력하세요');
				$("#su2").val("");
				$("#su2").focus();
				return;
			}
			
			// jQuery Ajax요청
			$.ajax({
				// 요청 정보
				url			:	"calc.do",				// CalcAction
				data		:	{"su1":su1, "su2":su2},	// parameter : calc.do?su1=5&su2=8
						
				// 응답 정보
				dataType	:	"json",
				success		:	function(res_data){
					// res_data = {"plus":13, "minus":-3, "multiply":40, "divide":0} 
					$("#plus").html(res_data.plus);
					$("#minus").html(res_data.minus);
					$("#multiply").html(res_data.multiply);
					$("#divide").html(res_data.divide);
				},
				error		:	function(err){
					alert(err.responseText);
				}
				
			}); // ajax() - end
			
		}); // click() - end
		
	}); // ready() - end
	
</script>



</head>
<body>
수1:<input id="su1"> <br>
수2:<input id="su2"> 
   <input id="btn-result" type="button" value="결과보기">
<hr>
<table width="500" border="1">
	<tr>
		<th width="30%">더하기</th>
		<td><span id="plus"></span></td>
	</tr>
	<tr>
		<th>빼기</th>
		<td><span id="minus"></span></td>
	</tr>
	<tr>
		<th>곱하기</th>
		<td><span id="multiply"></span></td>
	</tr>
	<tr>
		<th>나누기</th>
		<td><span id="divide"></span></td>
	</tr>
</table>
	
</body>
</html>

 

)CalcAction

package action;

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

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

/**
 * Servlet implementation class CalcAction
 */
@WebServlet("/calc.do")
public class CalcAction extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(
			HttpServletRequest request, 
			HttpServletResponse response)
			throws ServletException, IOException {
			// /calc.do?su1=5&su2=8
		
		// 0. 수신 인코딩 설정
		request.setCharacterEncoding("utf-8");
		
		// 1. parameter 받기
		int su1 = Integer.parseInt(request.getParameter("su1"));
		int su2 = Integer.parseInt(request.getParameter("su2"));
		
		int plus = su1 + su2;
		int minus = su1 - su2;
		int multiply = su1 * su2;
		int divide = su1 / su2;
		
		// 결과 전송
		response.setContentType("application/json; charset:utf-8;");
		PrintWriter out = response.getWriter();
		

		String json = String.format("{\"plus\":%d}, {\"minus\":%d}, {\"multiply\":%d} ,{\"divide\":%d}",plus, minus, multiply, divide);
		out.println(json);

	}

}