.jsp 연습하기 - 요청 파라미터

오늘·2021년 5월 5일
2

웹 페이지 연습

목록 보기
7/35

요청 파라미터의 값 받기

우리는 앞에서도 계속 받아왔다.
String 변수 = request.getParameter(가져올 파라미터 이름); 의 형태로

이러한 경우 앞에서 <input type="text" name="id">로 작성했다면
String id = request.getParameter("id") 의 형태로 받아오면 되는 것이다.

작성해보기

<%
	request.setCharacterEncoding("utf-8");
		
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	String name = request.getParameter("name");
		
	String phone1 = request.getParameter("phone1");
	String phone2 = request.getParameter("phone2");
	String phone3 = request.getParameter("phone3");
		
	String gen = request.getParameter("gender");
		
	// 선택되지 않은 변수의 값이 null로 출력되는 것이 마음에 들지 않으니 수정
	// String hobby1 =request.getParameter("hobby1");
	// String hobby2 =request.getParameter("hobby2");
	// String hobby3 =request.getParameter("hobby3");
		
	// 들어온 name의 값을 배열로 저장하기
	String hobby[] = request.getParameterValues("hobby");
		
	String comment = request.getParameter("comment");
%>
	
<p>
아이디 : <%= id %> <br>
비밀번호 : <%= pw %> <br>
이름 : <%= name %> <br>
<br>
전화번호 : <%= phone1 %> - <%= phone2 %> - <%= phone3 %> <br>
성별 : <%= gen %> <br>
취미 : <%
		if(hobby != null) {
			for(int i=0; i<hobby.length; i++){
				out.print(" " + hobby[i]);
			}
		}
	 %>
<br>
가입인사 : <%= comment %> <br>

요청 파라미터의 값 한번에 받기

위 처럼 파라미터를 하나한 받아오는 방법이 있다면, 요청 파라미터를 설정하지 않아도 모든 값을 전달받을 수 있는 방법도 있다. 텍스트, 라디어, 드롭다운 박스와 같은 다양한 유형에서 가능하다.

예를 들어

<body>
	<!-- 요청 파라미터를 한번에 전체 다 받기 -->
	<%
    		// 받아온 request를 어떤 형식으로 인코딩 하겠는가
		request.setCharacterEncoding("utf-8");
	
    		// 한번에 받아오기 위한 부분이다.
		Enumeration paramNames = request.getParameterNames();
		while(paramNames.hasMoreElements()) {
        		// name=""으로 작성한 이름 부분을 가져온다.
			String name = (String) paramNames.nextElement();
			out.print("<br>" + name);
			
            		// 해당 name에 해당하는 값을 가져온다.
			String value = request.getParameter(name);
			out.print(" : " + value);
		}
	%>
</body>


출력된 모양을 보면 어떤 식으로 작동되는지 볼 수 있을 것이다.


여기서 사용한 코드 전체

1. 1_form.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title> form processing </title>
</head>
<body>
	<h3> 회원 가입</h3>
	<form action="1_process01.jsp" name="member" method="post">
		<p> <label for="id"> 아이디 </label>
			<input type="text" id="id" name="id">
			<input type="button" value="아이디 중복 검사" id="id">
			
		<p> <label> 비밀번호
			<input type="password" name="password" id="pw"> </label>
		
		<p> <label> 이름 </label>
			<input type="text" name="name" id="name">
			
		<p> <label> 연락처 뒷자리
			<input type="text" name="phone1" id="tel" maxlength="3"> -
			<input type="text" name="phone2" id="tel" maxlength="4"> -
			<input type="text" name="phone3" id="tel" maxlength="4"> </label>
			
		<p> <label> 성별 
			<input type="radio" name="gender" value="남성" checked="checked"> 남성
			<input type="radio" name="gender" value="여성" checked="checked"> 여성 </label>
			
		<p> <label> 취미 : <input type="checkbox" name="hobby1" value="독서">  독서
							<input type="checkbox" name="hobby2" value="운동"> 운동
							<input type="checkbox" name="hobby3" value="영화"> 영화  </label>
					   
		<p> <input type="submit" value="가입하기">
			<input type="reset" value="다시쓰기">
	</form>
</body>
</html>

2. 2_select.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>select 태그 연습</title>
</head>
<body>
	<form action="2_process.jsp" method="post">
		<fieldset>
			<legend> select 태그로 연락처 수 정하기</legend>
			<label> 연락처
				<!--  size : 한번에 보일 갯수 -->
				<select name="phone1" size="4">
					<option value="010">010</option>
					<option value="011">011</option>
					<option value="012">012</option>
					<option value="013">013</option>
					<option value="014">014</option>
					<!-- disabled : 보이긴 하지만 선택할 수는 없는 / 읽기 전용 같은 느낌 -->
					<option value="015" disabled> 015 </opthon>
					<!-- selected : 기본 선택 같은 느낌 -->
					<option vlaue="016" selected> 016 </option>
					
				</select> - <input type="text" maxlength="4" size="4" name="phone2"> -
				<input type="text" maxlength="4" size="4" name="phone3">
			</label>
		</fieldset>
		<br>


		<fieldset>
			<legend>성별을 목록 상자로 바꾸기</legend>
				<select name="gender">
					<optgroup label="성별">
						<option value="female">여성</option>
						<option value="male">남성</option>
					</optgroup>
				</select>
		</fieldset>
		
	</form>
</body>
</html>

3. textarea

<body>
	<fieldset>
		<legend> 가입인사 </legend>
			<p> 여러 줄 입력해주세요 </p>
			<textarea rows="5" cols="30" name="comment" placeholder="입력"></textarea>
	</fieldset>
</body>
  1. 4_total_input.jsp
<body>
	<form action="4_process.jsp" name="member" method="post">
		<p> <label for="id"> 아이디 </label> <input type="text" id="id" name="id">
			<input type="button" value="아이디 중복 검사" id="id">
			
		<p> <label for="pw"> 비밀번호 </label> <input type="password" name="pw" id="pw">
		<p> <label> 이름 </label> <input type="text" name="name" id="name">
		
		
		<fieldset>
			<legend> select 태그로 연락처 수 정하기</legend>
			<label> 연락처 <!--  size : 한번에 보일 갯수 --> <select name="phone1"
				size="4">
					<option value="010">010</option>
					<option value="011">011</option>
					<option value="012">012</option>
					<option value="013">013</option>
					<option value="014">014</option>
					<!-- disabled : 보이긴 하지만 선택할 수는 없는 / 읽기 전용 같은 느낌 -->
					<option value="015" disabled>015 </opthon>
						<!-- selected : 기본 선택 같은 느낌 -->
					<option vlaue="016" selected>016</option>

			</select> - <input type="text" maxlength="4" size="4" name="phone2"> -
				<input type="text" maxlength="4" size="4" name="phone3">
			</label>
		</fieldset>



		<p> <label> 성별 <input type="radio" name="gender" value="남성" checked="checked"> 남성
			<input type="radio" name="gender"value="여성" checked="checked"> 여성
			</label>
		<p> <label> 취미 : </label>
		<!-- 선택받지 못한 칸의 값이 null 로 비워진 채 출력되는 것이 마음에 들지 않으니 모습 변경 -->
		<!--
		<input type="checkbox" name="hobby1" value="독서"> 독서
		<input type="checkbox" name="hobby2" value="운동"> 운동
		<input type="checkbox" name="hobby3" value="영화"> 영화  -->
		
		<!-- 보내는 name을 모두 hobby로 변경 -->
		<input type="checkbox" name="hobby" value="독서"> 독서
		<input type="checkbox" name="hobby" value="운동"> 운동
		<input type="checkbox" name="hobby" value="영화"> 영화 
			
			
		<fieldset>
			<legend> 가입인사 </legend>
			<p>여러 줄 입력해주세요</p>
			<textarea rows="5" cols="30" name="comment" placeholder="입력"></textarea>
		</fieldset>


		<p> <input type="submit" value="가입하기">
			<input type="reset" value="다시쓰기">
	</form>
</body>

4-1. 4_process.jsp

<body>
	<%
		request.setCharacterEncoding("utf-8");
		
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		String name = request.getParameter("name");
		
		String phone1 = request.getParameter("phone1");
		String phone2 = request.getParameter("phone2");
		String phone3 = request.getParameter("phone3");
		
		String gen = request.getParameter("gender");
		
		// 선택되지 않은 변수의 값이 null로 출력되는 것이 마음에 들지 않으니 수정
		// String hobby1 =request.getParameter("hobby1");
		// String hobby2 =request.getParameter("hobby2");
		// String hobby3 =request.getParameter("hobby3");
		
		// 들어온 name의 값을 배열로 저장하기
		String hobby[] = request.getParameterValues("hobby");
		
		String comment = request.getParameter("comment");
	%>
	
	<p>
	아이디 : <%= id %> <br>
	비밀번호 : <%= pw %> <br>
	이름 : <%= name %> <br>
	<br>
	전화번호 : <%= phone1 %> - <%= phone2 %> - <%= phone3 %> <br>
	성별 : <%= gen %> <br>
	취미 : <%
			if(hobby != null) {
				for(int i=0; i<hobby.length; i++){
					out.print(" " + hobby[i]);
				}
			}
		 %>
	<br>
	가입인사 : <%= comment %> <br>
</body>

5. 5_total_input.jsp

<body>
	<form action="5_process.jsp" name="member" method="post">
		<p> <label for="id"> 아이디 </label> <input type="text" id="id" name="id">
			<input type="button" value="아이디 중복 검사" id="id">
			
		<p> <label for="pw"> 비밀번호 </label> <input type="password" name="pw" id="pw">
		<p> <label> 이름 </label> <input type="text" name="name" id="name">
		
		
		<fieldset>
			<legend> select 태그로 연락처 수 정하기</legend>
			<label> 연락처 <!--  size : 한번에 보일 갯수 --> <select name="phone1"
				size="4">
					<option value="010">010</option>
					<option value="011">011</option>
					<option value="012">012</option>
					<option value="013">013</option>
					<option value="014">014</option>
					<!-- disabled : 보이긴 하지만 선택할 수는 없는 / 읽기 전용 같은 느낌 -->
					<option value="015" disabled>015 </opthon>
						<!-- selected : 기본 선택 같은 느낌 -->
					<option vlaue="016" selected>016</option>

			</select> - <input type="text" maxlength="4" size="4" name="phone2"> -
				<input type="text" maxlength="4" size="4" name="phone3">
			</label>
		</fieldset>



		<p> <label> 성별 <input type="radio" name="gender" value="남성" checked="checked"> 남성
			<input type="radio" name="gender"value="여성" checked="checked"> 여성
			</label>
		<p> <label> 취미 : </label>
		<input type="checkbox" name="hobby" value="독서"> 독서
		<input type="checkbox" name="hobby" value="운동"> 운동
		<input type="checkbox" name="hobby" value="영화"> 영화 
			
			
		<fieldset>
			<legend> 가입인사 </legend>
			<p>여러 줄 입력해주세요</p>
			<textarea rows="5" cols="30" name="comment" placeholder="입력"></textarea>
		</fieldset>


		<p> <input type="submit" value="가입하기">
			<input type="reset" value="다시쓰기">
	</form>
</body>

5-1. 5_process.jsp

<body>
	<!-- 요청 파라미터를 한번에 전체 다 받기 -->
	<%
		request.setCharacterEncoding("euc-kr");
	
		Enumeration paramNames = request.getParameterNames();
		while(paramNames.hasMoreElements()) {
			String name = (String) paramNames.nextElement();
			out.print("<br>" + name);

			String value = request.getParameter(name);
			out.print(" : " + value);
		}
	%>
</body>

0개의 댓글