JinSeong 2021. 10. 6. 17:55

form태그의 input에서 같은 name을 가진 파라미터를 가져오는 방법

 

03sameNameForm.jsp 코드내용

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="03sameNameResult.jsp" method="post">
	이름 : <input type="text" name="이름"> <br>
	주소 : <input type="text" name="add"> <br>
	<hr>
	취미 <br>
	운동 <input type="checkbox" name="hobby" value="exercise"> <br>
	영화 <input type="checkbox" name="hobby" value="movie"> <br>
	볼링 <input type="checkbox" name="hobby" value="bowling"> <br>
	축구 <input type="checkbox" name="hobby" value="soccer"> <br>
	
	<button type=submit>설문조사</button>
</form>

</body>
</html>

checkbox같은 경우에는 같은 name을 사용해서 데이터를 받아야 한다. 그 경우 파라미터의 이름이 같은 게 여러개 발생되는 데

Map을 이용한 for문을 통해 보여줄 수 있다.

 

 

03sameNameResult.jsp 코드내용

<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	request.setCharacterEncoding("utf-8");
%>

<%
	String name = request.getParameter("이름");
	String address = request.getParameter("add");
	String hobby = request.getParameter("hobby");
	//취미 , 파라미터 이름이 같은 게 여러개
	Map<String, String[]> paramMap = request.getParameterMap();
	String[] hobbies = paramMap.get("hobby");
	String[] hobbies2 = request.getParameterValues("hobby");
%>

이름 : <%=name %> <br>
주소 : <%=address %> <br>
<%-- 취미(map) : <%=hobbies %> <br>
취미(values) : <%=hobbies2 %> <br>
객체 주소값만 나옴
--%>

<%
	for(int i=0; i<hobbies.length; i++){
		out.print(hobbies[i]);
	}
	out.print("<hr>");
	for(String hobby1 : hobbies2){
		out.print(hobby1 + "<br>");
	}
%>
</body>
</html>

 

 

위와 같은 내용이지만 Enumeration과 Map을 활용한 방식 두 가지 예시이다.

 

 

04sameNameForm.jsp 코드내용

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="04sameNameResult.jsp" method="post">
	이름 : <input type="text" name="이름"> <br>
	주소 : <input type="text" name="add"> <br>
	<hr>
	취미 <br>
	운동 <input type="checkbox" name="hobby" value="exercise"> <br>
	영화 <input type="checkbox" name="hobby" value="movie"> <br>
	볼링 <input type="checkbox" name="hobby" value="bowling"> <br>
	축구 <input type="checkbox" name="hobby" value="soccer"> <br>
	
	<button type=submit>설문조사</button>
</form>

</body>
</html>

 

04sameNameResult.jsp 코드내용

<%@page import="java.util.Iterator"%>
<%@page import="java.util.Set"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<% request.setCharacterEncoding("utf-8"); %>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	Enumeration<String> paramEnum = request.getParameterNames();

	while(paramEnum.hasMoreElements()){
		String paramName = paramEnum.nextElement();
		String[] paramValues = request.getParameterValues(paramName);
		for(String paramVal : paramValues){
			out.print(paramName + ":" + paramVal + "<br>");
		}
		out.print("<hr>");
	}
	//////////////////////////////////////////////////////////////////////////////////////////////////
	Map <String, String[]> paramMap = request.getParameterMap(); // 이름:[값1], add:[값2], hobby : [값1, 값2, 값...]		
	Iterator<String> iter = paramMap.keySet().iterator();
	while(iter.hasNext()){
		String key = iter.next();
		String[] values = paramMap.get(key);
		for(String paramVal : values){
			out.print(key + ":" + paramVal + "<br>");		
		}
	}
	
	out.print("<hr>");
%>
</body>
</html>