📆 Today I Learned(개발언어학습)/JSP
Day03(saneNameFrom)
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>