개발/JSP

[JSP] request 객체 연습

suniverse 2023. 1. 23. 23:37

✍ 객체 생성 test1.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="test1_.jsp" method="get">
		<table border="1">
			<tr>
				<td>이름</td>
				<td><input type="text" name="name" required="required"></td>
			</tr>
			<tr>
				<td>나이</td>
				<td><input type="text" name="age" required="required"></td>
			</tr>
			<tr>
				<td>성별</td>
				<td>
					<input type="radio" id="gender_male" name="gender" value="male"><label for="gender_male">남</label>
					<input type="radio" id="gender_female" name="gender" value="female"><label for="gender_female">여</label>
				</td>
			</tr>
			<tr>
				<td>취미</td>
				<td>
					<input type="checkbox" name="hobby" id="hobby_book" value="독서"><label for="hobby_book">독서</label>
					<input type="checkbox" name="hobby" id="hobby_game" value="게임"><label for="hobby_game">게임</label>
					<input type="checkbox" name="hobby" id="hobby_tv" value="TV시청"><label for="hobby_tv">TV시청</label>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="submit" value="전송">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

✍ 객체 출력 test1_.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>
	<%
	request.setCharacterEncoding("UTF-8");

	String strName = request.getParameter("name");

	String strAge = request.getParameter("age");

	String strGender = request.getParameter("gender");

	String[] strHobbies = request.getParameterValues("hobby");

	%>
	
	<table border="1">
		<tr>
			<td>이름</td>
			<td><%=strName %></td>
		</tr>
		<tr>
			<td>나이</td>
			<td><%=strAge %></td>
		</tr>
		<tr>
			<td>성별</td>
			<td><%=strGender %></td>
		</tr>
		<tr>
			<td>취미</td>
			<td>
				<%
				for(String strHobby : strHobbies) {
					out.print(strHobby + " ");
				}
				%>
			</td>
		</tr>
	</table>
</body>
</html>
<form> 태그 
1. action 속성 
 - submit 동작 시 action 속성에 지정된 페이지로 이동 요청을 수행한다. 
   이때, 폼 태그 내의 파라미터(폼 파라미터)를 모두 request 객체에 저장하여 함께 전송한다. 
   ex) submit 버튼 클릭 시 test1_.jsp 페이지로 이동 

2. method 속성
 - GET 방식 : method="get"  작성하거나 생략이 가능하다. 
   하이퍼링크 또는 url을 직접 이동하는 경우에 사용한다. (post 방식을 제외하면 대부분 get 방식이다) 
  --> 전달되는 파라미터 모두 url(주소) 뒤에 붙여서 전송한다. 
  --> 한글 등의 데이터 처리를 윟서는 문서의 문자 인코딩(=캐릭터셋) 방식을 UTP-8로 변경해야 한다. 

 - POST 방식 : method="post"를 작성하여 사용한다. 
  --> 한글 처리를 위해서는 request 객체의 setCharacterEncoding() 메서드를 호출하여 "UTF-8" 문자열을
       파라미터로 전달해야한다. 

 

test1.jsp 페이지에서 submit 버튼 클릭 시 
form태그 내의 데이터(= 폼 파라미터)가 request 객체에 모두 저장되고, action 속성에 지정된 페이지로 이동(=요청) 하면서 데이터가 전달된다. 
--> 요청 관련 모든 정보는 request 객체가 관리한다. (= jsp가 자동으로 생성하는 객체 = 내장 객체) 
     따라서, request.메서드명() 형태로 request 객체에 접근이 가능하다. 

1) request.getParameter("파라미터명"); --> 단일 항목 데이터 가져오기 
2) request.getParameterValues("파라미터명"); --> 복수 항목 파라미터 가져오기 
   --> "파라미터명"에 해당하는 부분은 폼 요소의 name 속성값을 지정해야 한다. 
  --> 주의!!! 전달받은 파라미터가 존재하지 않을 경우(지정한 이름이 없을 경우) null값이 리턴되고, 
       파라미터는 있으나 데이터가 없는 경우 널스트링(" ")이 리턴된다. 

 

✍ POST 방식 요청으로 폼 파라미터가 전달될 경우 한글 인코딩 방식 변경 처리 

request.setCharacterEncoding("UTF-8");

--> 반드시 응답페이지에서 작성해야 한다. 

--> request 객체의 setCharacterEncoding() 메서드를 호출하여 인코딩 방식을 지정해야 한다. 

 

✍ 파라미터명(name 의 속성값)이 "name"인 값을 가져와서 strName 변수에 저장하기 

String strName = request.getParameter("name");

--> 이때 리턴타입이 String 이므로 String 타입 변수에 저장한다. 

 

✍ 파라미터명이 "age"인 값을 가져와서 strAge 변수에 저장하기 

String strAge = request.getParameter("age");

** 주의 ! 정수 데이터도 getParameter로 가져올 경우 무조건 문자열로 취급된다. 

 

✍ 파라미터명이 "gender"인 값을 가져와서 strGender 변수에 저장 

String strGender = request.getParameter("gender");

 

✍ 파라미터명이 "hobby"인 값을 가져와서 strHobby에 저장하기

String[] strHobbies = request.getParameterValues("hobby");

--> hobby는 복수 개의 데이터를 가져오기 때문에 getParameterValues() 메서드를 사용한다. 

** 주의 ! 배열 데이터 이므로 직접 출력은 의미가 없다. 직접 출력하면 참조값이 출력된다. 

              반복문을 사용하여 각 배열의 요소를 출력해야 한다. 

 

ex) 향상된 for문 

for(String strHobby : strHobbies) {
    out.print(strHobby + " ");
}

💻 test1.jsp 파일 실행 (객체 생성 페이지)

--> 테이블이 만들어 졌다. 

    데이터를 입력하였다. 전송을 누르면 test1_.jsp로 데이터가 전달된다. 

    test1_.jsp의 메서드가 데이터를 전달받아 출력한다. 

 

전송(submit)을 눌러보자!

 

💻 응답페이지 확인

--> test1.jsp에서 작성한 데이터들이 정상적으로 전달되어 출력되었다.