개발자 미니민의 개발스터디

[JSP] getParameter / getParameterValues / getParameterMap /getParameterNames

by mini_min

JSP

[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

활동하기