JSP

request 기본 객체 02

yayeun 2016. 5. 28. 14:38

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

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

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

 메서드

 리턴타입

 설명

 getParameter(String name)

 String

 이름이 name 인 파라미터의 값을 구한다. (존재하지 않을 경우 null 리턴)

 getParameterValues(String name)

 String[]

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

 getParameterNames()

 java.util.Enumeration 

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

 getParameterMap()

 java.util.Map 

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


< -- makeTestForm.jsp : 폼에 입력한 값을 출력해주는 JSP -- >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
    폼에 데이터를 입력한 후 '전송' 버튼을 클릭
    <form action="viewParameter.jsp" method="post">
        이름 : <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="전송"/>
    </form>
</body>
</html>
 
cs


< -- makeTestForm.jsp : 출력 화면 -- >

- 전송 버튼을 클릭하면 웹 브라우저는 폼 :<form>에 입력한 데이터를 action="viewParameter.jsp"로 전송

* 전송한 데이터는 요청 파라미터로 전송되며, request 기본 객체의 메서드를 사용해 요청 파라미터를 읽어 올 수 있다.



< -- viewParameter.jsp :  폼에 입력한 데이터 JSP -- >

1
2
3
4
5
6
7
8
9
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
59
60
<%@page import="java.util.Map"%>
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

   <!--  요청 파라미터의 캐릭터 인코딩을 utf-8로 지정 (한글을 올바르게 처리하기 위함) -->
    <%
        request.setCharacterEncoding("utf-8");
    %>
<!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=utf-8">
<title>요청 파라미터 출력</title>
</head>
<body>
    <!-- request.getParameter() 메서드를 사용하여 name 파라미터와 address 파라미터의 값을 출력 -->
    <b>request.getParameter() 메서드 사용</b><br>
    name 파라미터 = <%=request.getParameter("name"%><br>
    address 파라미터 = <%=request.getParameter("address"%><br>
    
    <!-- request.getParameterValues() 메서드는 String 배열(String[])을 리턴 -->
    <!-- 배열의 첫번쨰 원소를 사용할 떄에는 배열의 변수[0] 형태를 사용 
(변수 values -> values[0], values[1] 형식으로 파라미터 값에 접근 ) -->
    <p>
    <b>request.getParameterValues() 메서드를 사용</b>
    <%
        String[] values = request.getParameterValues("pet");
        if(values != null){
            for(int i=0; i<values.length; i++){
    %>
                <%= values[i] %>
    <%
            }
        }
    %>
    
    <!-- 파라미터의 이름을 출력 , 이 코드가 request.getParameterNames() 메서드를 사용하는 기본 형태이므로 기억-->
    <p>
    <b>request.getParameterNames() 메서드를 사용</b>
    <%
        Enumeration paramEnum = request.getParameterNames();
        while(paramEnum.hasMoreElements()){
            String name = (String)paramEnum.nextElement();
    %>
        <%=name %>
    <%
        }
    %>
    
    <!-- request.getParameterMap() 은 자바의 Map 을 사용하여 파라미터 이름과 파라미터 값을 리턴,
 Map 에는 <파라미터 이름, 파라미터 값 배열> 이 쌍을 이루고 있다. -->
    <p>
    <b>request.getParameterMap() 메서드를 사용</b>
    <%
        Map parameMap = request.getParameterMap();
        String[] nameParam = (String[])parameMap.get("name");
        if(nameParam != null){
    %>
        <%=nameParam[0%>
    <%%>
</body>
</html>
cs

- request.getParameter() 메서드 : 오직 한개의 값만 읽어 올 수 있다.

- request.getParameterValues() 메서드 : 같은 이름으로 전송된 파라미터이 값들을 배열로 리턴 (name 이 pet이 파라미터의 값을 배열로 받음 = dog, cat)

- 체크박스와 라디오버튼의 경우 선택하지 않으면 파라미터 자체가 전송되지 않지만 텍스트입력과 같은 입력 요소들은 값을 입력하지 않더라도 빈 문자열("")이 파라미터의 값으로 전달된다.


< -- viewParameter.jsp : 출력 화면 -- >