[JSP] request 객체 연습
✍ 객체 생성 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에서 작성한 데이터들이 정상적으로 전달되어 출력되었다.