[JSP] getParameter / getParameterValues / getParameterMap /getParameterNames
by mini_min[JSP] getParameter / getParameterValues / getParameterMap / getParameterNames
-- 예시 코드
<form action="ex12_ok.jsp" method="post"> <p> 이름 : <input type="text" name="name"> </p> <p> 패스워드 : <input type="password" name="pwd"> </p> <p> 나이 : <input type="text" name="age"> </p> <p> <input type="radio" name="gender" value="M" checked="checked">남자 <input type="radio" name="gender" value="F">여자 </p> <p> 좋아하는 과목 <input type="checkbox" name="subject" value="자바"> 자바 <input type="checkbox" name="subject" value="스프링"> 스프링 <input type="checkbox" name="subject" value="서블릿"> 서블릿 <input type="checkbox" name="subject" value="데이터베이스"> 데이터베이스 <input type="checkbox" name="subject" value="웹"> 웹 </p> <p> <button type="submit">보내기</button> </p> </form>
✔️getParameter
: request.getParameter() : get, post 방식으로 넘오은 파라미터를 받는다.
: 리턴 타입 : String
👩💻 존재하지 않는 파라미터를 호출하면 null을 반환한다.
👩💻 checkbox는 선택한 것이 없으면 ""이 아니라 null 을 반환한다.
👩💻 동일한 이름으로 파라미터를 전송한 경우 getParameter() 는 첫번째 파라미터만 받는다. 예를 들어, 아래 코드에서 subject 라는 name 속성을 가진 값이 여러 개일 때 getParameter() 를 사용하면 맨 처음 subejct 파라미터만 나온다.
💡 동일한 이름의 파라미터가 두 개 이상이면 반드시 getParameterValues()로 받는다.
<%@ page contentType="text/html; charset=UTF-8"%> <%@page trimDirectiveWhitespaces="true" %> <% //POST 방식으로 넘어온 파라미터의 인코딩 설정(파라미터를 받기 전에 설정) request.setCharacterEncoding("utf-8"); //request.getParameter() : get, post 방식으로 넘오은 파라미터를 받는다. // : 리턴타입 - String String a = request.getParameter("name"); String pwd = request.getParameter("pwd"); String age = request.getParameter("age"); String gender = request.getParameter("gender"); String city = request.getParameter("city"); //존재하지 않는 파라미터는 null을 반환한다. String subject = request.getParameter("subject"); //동일한 이름으로 파라미터를 전송한 경우 getParameter() 는 첫번째 파라미터만 받는다. //동일한 이름의 파라미터가 두 개 이상이면 반드시 getParameterValues()로 받는다. //checkbox는 선택한 것이 없으면 ""이 아니라 null 을 반환한다. %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h3> getParameter() 로 클라이언트가 요청한 파라미터 받기 </h3> <p> 이름 : <%=a %> </p> <p> 패스워드 : <%=pwd %> </p> <p> 나이 : <%=age %> </p> <p> 성별 : <%=gender %> </p> <p> 출신지 : <%=city %> </p> <p> 과목 : <%=subject %> </p> </body> </html>
✔️getParameterValues
: getParameterValues() : 리턴 타입 - String[] (배열 형태로 리턴한다.)
👩💻 동일한 이름으로 파라미터를 전송한 경우 반드시 getParameterValues()로 파라미터를 받는다.
👩💻 <select>의 multiple 속성을 준 경우에도 반드시 getParameterValues()로 파라미터를 받는다.
💡 하나의 파라미터를 받을 때는 뒤에 자릿수 를 써야한다.
💡 checkbox 나 radio 선택항목은 하나도 선택되지 않으면 getParameter(), getParameterValues() 모두 null을 반환한다.
<%@ page contentType="text/html; charset=UTF-8"%> <%@page trimDirectiveWhitespaces="true" %> <% request.setCharacterEncoding("utf-8"); String name = request.getParameterValues("name")[0]; //이건 배열이라서 뒤에 [0] 자릿수 안쓰면 안된다. String pwd = request.getParameterValues("pwd")[0]; String age = request.getParameterValues("age")[0]; String gender = request.getParameterValues("gender")[0]; String []ss = request.getParameterValues("subject"); //checkbox 나 radio 선택항목은 하나도 선택되지 않으면 //getParameter(), getParameterValues() //모두 null을 반환한다. String subject = ""; if(ss != null){ for(String s : ss){ subject += s + " "; } } %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h3> getParameterValues() </h3> <p> 이름 : <%=name %> </p> <p> 패스워드 : <%=pwd %> </p> <p> 나이 : <%=age %> </p> <p> 성별 : <%=gender %> </p> <p> 과목 : <%=subject %> </p> </body> </html>
✔️getParameterMap
: 키와 값으로 한 쌍을 갖는 자료형이 Map 이다. 맵의 큰 특징은 key 로 value 를 얻을 수 있는 것이다.
<%@page import="java.util.Iterator"%> <%@page import="java.util.Map"%> <%@ page contentType="text/html; charset=UTF-8"%> <%@page trimDirectiveWhitespaces="true" %> <% request.setCharacterEncoding("utf-8"); //파라미터이름, 값 Map<String, String[]> paramMap = request.getParameterMap(); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h3> getParameterMap() 으로 파라미터 받기 </h3> <% String name = paramMap.get("name")[0]; String pwd = paramMap.get("pwd")[0]; String age = paramMap.get("age")[0]; String gender = paramMap.get("gender")[0]; String []ss = paramMap.get("subject"); String subject = ""; if(ss !=null){ for(String s : ss){ subject += s + " "; } } out.print("<p>이름:" + name + "</p>"); out.print("<p>패스워드:" + pwd + "</p>"); out.print("<p>나이:" + age + "</p>"); out.print("<p>성별:" + gender + "</p>"); out.print("<p>과목:" + subject + "</p>"); out.print("<hr>"); //Map 은 key 에서 반복자를 가져온다. Iterator<String> it = paramMap.keySet().iterator(); while(it.hasNext()){ String key = it.next(); //파라미터 이름 String[] values = paramMap.get(key); //파라미터 값 if(values != null){ for(String s: values){ out.print("<p>"+key+ " : " + s + "</p>"); } } } %> </body> </html>

맵은 key 에서 반복자를 가져올 수 있다. Iterator 를 통해 파라미터의 이름과 값을 가져오면, 아래처럼 파라미터의 이름과 값들을 반복 나열할 수 있다.
✔️getParameterNames
: 서버로 전달된 모든 파라미터의 이름을 반환한다.
: 리턴값은 Enumeration 이다.
<% request.setCharacterEncoding("utf-8"); //getParameterNames() : 서버로 전달된 모든 파라미터의 이름 반환 Enumeration<String> e = request.getParameterNames(); //리턴값이 Enumeration 이다. %>
<% while(e.hasMoreElements()){ String name = e.nextElement(); //해당되는 이름의 Values 들 반환 String[]ss = request.getParameterValues(name); for(String s : ss){ out.print("<p>" + name + " : " + s + "</p>"); } } %>

e.nextElement() 으로 해당되는 이름들의 Values 들을 반환한다.
블로그의 정보
개발자 미니민의 개발로그
mini_min