본문 바로가기

JSP/JSP Programming

[JSP] HTML 폼과 요청 파라미터의 처리

반응형

JSP에서 가장 많이 사용하는 기능 중의 하나는 웹 브라우저 폼에 입력한 값을 처리하는 것이다.

■ 웹 브라우저는 폼에 입력한 정보를 파라미터로 전송한다.

■ request 기본 객체는 웹 브라우저가 전송한 파라미터를 읽어올 수 있는 메서드를 제공한다.


request 기본객체

메서드

리턴타입

설   명

 getParmeter(String name)

 String

 이름이 nam인 파라미터의 값을 구한다.

 존재하지 않을 경우 null을 리턴한다.

 getParmeterValues(String name)

 String[]

 이름이 name인 모든 파라미터의 값을 배열로 구한다.
 존재하지 않을 경우 null을 리턴한다.

 getParmeterNames()

 java.util.Enumeration

 웹 브라우저가 전송한 파라미터의 이름을 구한다.

 getParameterMap() java.util.Map

 웹 브라우저가 전송한 파라미터의 맵을 구한다.
 맵은 <파라미터 이름, 값> 쌍으로 구성된다.



라인

makeTestForm.jsp

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20

21

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>폼 생성</title>
</head>
<body>
폼에 데이터를 입력한 후 [전송] 버튼을 클릭하세요.
<form action="viewParameter.jsp" method = "post">       // method = "get"
    이름 <input type = "text" name = "name" size = "10"><br/>
    주소 <input type = "text" name = "address" size = "30"><br/>
    좋아하는 동물
        <input type = "checkbox" name = "pet" value = "dog"> 강아지
        <input type = "checkbox" name = "pet" value = "cat"> 고양이
        <input type = "checkbox" name = "pet" value = "pig"> 돼지
<br/>
<input type = "submit" value = "전송">
<input type = "reset" value = "취소">
</form>
</body>
</html>


-. 라인 09 : 입력한 데이터를 전달할 JSP 페이지를 viewParameter.jsp로 지정한다.(POST or GET중 선택)

-. 라인 10 : 이름이 name인 요청 파라미터 입력 박스 생성

-. 라인 11 : 이름이 address인 요청 파라미터 입력 박스 생성

-. 라인 13 ~ 15 : 이름이 pet인 요청 파라미터의 체크박스 생성



출력결과







라인

viewParmeter.jsp

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import = "java.util.Enumeration" %>
<%@ page import = "java.util.Map" %>
<%
    request.setCharacterEncoding("UTF-8");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>요청 파라미터 출력</title>
</head>
<body>
<b>request.getParameter() 메서드 사용</b><br/>
name 파라미터 = <%= request.getParameter("name") %><br/>
address 파라미터 = <%= request.getParameter("address") %>
<p/>
<b>request.getParameterValues() 메서드 사용</b><br/>
<%

    // 같은 이름의 모든 파라미터 값을 사용할 경우 getParameter() 메서드가 아닌 getParameterValues() 메서드를 사용
    String[] values = request.getParameterValues("pet");


    if (values != null) {
       
        for (int i = 0; i < values.length; i++) {
           
%>
        <%= values[i] %>
<%           
        }
    }
%>
<p/>
<b>request.getParameterNames() 메서드 사용</b><br/>
<%
    Enumeration paramEnum = request.getParameterNames();
   
    while (paramEnum.hasMoreElements()) {
       
        String name = (String)paramEnum.nextElement();
%>
        <%= name %>
<%
    }
%>
<p/>
<b>request.getParameterMap() 메서드 사용</b><br/>
<%
    Map parameterMap = request.getParameterMap();
    String[] nameParam = (String[])parameterMap.get("name");
   
    if (nameParam != null) {
%>
name = <%= nameParam[0] %>
<%
    }
%>
</body>
</html>


-. 라인 05 : 요청 파라미터의 캐릭터 인코딩을 UTF-8로 지정한다. 이는 한글을 올바르게 처리하기 위함이다.

-. 라인 14 ~ 15 : request.getParameter() 메서드를 사용하여 name 파라미터와 address 파라미터의 값을 출력한다.

-. 라인 20 : request.getParameterValues() 메서드는 String 배열(String[])을 리턴한다.

                 배열의 첫 번째 원소를 사용할 때에는 배열 변수[0]의 형태를 사용한다.

                 배열 변수 이름을 values로 하였으므로, values[0], values[2]와 같은 형식으로 파라미터 값에 접근한다.

-. 라인 33 ~ 41 : 파라미터의 이름을 출력한다.

                         이 코드가 request.getParmeterNames()메서드를 사용하는 기본 형태이므로 익혀두어야 한다.

-. 라인 46 : request.getParameterMap()은 자바의 Map을 사용하여 파라미터 이름과 파라미터 값을 리턴한다.

                 이 Map에는 <파라미터 이름, 파라미터 값 배열>이 쌍을 이루고 있다.



출력결과





※ GET 방식 전송과 POST 방식 전송



■ POST방식

 -. POST방식은 파라미터 데이터를 데이터 영역을 이용해서 파라미터를 전송한다.

POST전송방식의 URL

http://localhost:8080/Gamay/Chapter03/viewParameter.jsp

POST방식은 데이터 영역을 이용해서 데이터를 전송하기 때문에 웹 브라우저나 웹 서버 등에 상관없이

   전송할 수 있는 파라미터의 길이에 제한이 없다.


■ GET방식

 -. GET 방식은 요청 URL에 파라미터를 붙여서 전송한다.

 -. GET방식은 URL의 뒤 부분에 물음표('?')와 함께 파라미터를 붙여서 전송한다.

 -. GET 방식으로 데이터를 전송하는 경우, 웹 브라우저에서 웹 서버로 전달된다.

GET 전송방식의 URL

http://localhost:8080/Gamay/Chapter03/viewParameter.jsp?name=%C7%CF%BE%DF%C5%D7&address=yinglong200%40me.com&pet=dog&pet=cat

GET방식은 웹 브라우저, 웹 서버 또는 웹 컨테이너에 따라 전송할 수 있는 파라미터 값의 길이에 제한이 있을 수 있다.







반응형

'JSP > JSP Programming' 카테고리의 다른 글

[JSP] 자바의 Web 기술  (0) 2012.05.22
[JSP] 웹 어플리케이션의 동작 원리  (0) 2012.05.22
[JSP] response 기본 객체  (0) 2012.04.18
[JSP] request 기본 객체  (0) 2012.04.18
[JSP] <FORM> 엘리먼트  (0) 2012.04.16