티스토리 뷰

Servlet JSP

입력 데이터 배열 전달

Programmers 2021. 4. 23. 10:58
반응형

두 개의 값을 입력받아서 더하는 프로그램을 만든 적이 있다.
이번에는 여러 개의 값을 받아서 만들어보도록 하자!

자~ 이렇게 만들어서 전달하면 될까? 혹시 10개가 되면 10개를 모두 이런 식으로 수정해야 하나? 그리고 서블릿에서는 이 전달받는 값들을 모두 수정해줘야 할까? 이번에 그렇게 하지 않고 해결하는 방법에 대해서 알아보겠다.
동일한 name속성(같은 키워드)으로 값을 전달할 경우 값이 중복되는 것이 아니라 배열로 전달하게 되어있다!

<!-- add2.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="add2" method="post">
		<div>
			<label>숫자만 입력하세요</label>
		</div>
			<div><input type="text" name="num"/></div>		
			<div><input type="text" name="num"/></div>	
			<div><input type="text" name="num"/></div>	
			<div><input type="text" name="num"/></div>	
			<div><input type="text" name="num"/></div>	
		<div>
			<input type="submit" value="더하기" />
		</div>
			<label>결과?</label>
	</form>

</body>
</html>

 

모든 name을 num으로 통일!  그러면 서블릿에서는 어떻게 받아야 할까?
하나씩 차례로 받아서 배열에 저장하면 된다!

//Add2.java
package com.newlecture.web;

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("/add2")
public class Add2 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
    						throws ServletException, IOException {
		
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		
		/* html로부터 num을 getParmeterValues로 배열로 전달 받아서 num_에 배열로 저장한다 */
		String[] num_ = request.getParameterValues("num");
		
		int result = 0;
		
		/* 배열을 길이만큼 읽으면서, 문자열을 정수로 변환해 결과값에 저장한다 */
		for(int i=0; i<num_.length; i++) {
			int num = Integer.parseInt(num_[i]);
			result += num;
		}
						
		response.getWriter().printf("Result is %d\n", result);
				
		}
	}
	


배열로 저장하기 위해서 String []을 선언
requestParameterValues: 배열을 읽어오는 함수

1~5를 입력한 결과 출력

num=1&num=2&num=3&num=4&num=5로 전달되는 것을 볼 수 있다. 
그리고 결과값은 15로 정상적으로 출력된다.

반복적인 값들을 전달할 때에는 이렇게 배열을 이용해서 전달하면 조금 더 간결한 코드를 만들 수 있다.

반응형
댓글
공지사항