[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 들을 반환한다.
'JSP' 카테고리의 다른 글
[JSP] hidden / disabled 차이 (파라미터가 서버로 가느냐) (0) | 2022.09.28 |
---|---|
[JSP] 📓 파라미터 전송 예제 (폼 예제) (0) | 2022.09.28 |
[JSP] submit 여러 가지 방법 (0) | 2022.09.28 |
[JSP] 파라미터 인코딩 - POST 방식 (0) | 2022.09.28 |
[JSP] 파라미터 인코딩 - GET 방식 (0) | 2022.09.28 |
블로그의 정보
개발자 미니민의 개발로그
mini_min