본문 바로가기

JAVA/JSP

[JSP] JSP 인자 전송 예제

728x90

GET 방식과 POST방식에 따른 데이터(인자) 전송 예제를 알아보자.

 

HTML FORM

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>form demo</title>
</head>
<body>
 
    <form name="frm" action="action.jsp" method="get">
        - 아이디 : <input type="text" id="id" name="id" /><br>
        - 패쓰워드 : <input type="password" id="pw" name="pw" /><br>
        - 이름 : <input type="text" id="name" name="name" /><br>
        - 주소 : <input type="text" id="address" name="address" /><br>
        - 취미 : 스포츠<input type="checkbox" id="hobby1" name="hobby" value="스포츠">&nbsp; 
                 독서<input type="checkbox" id="hobby2" name="hobby" value="독서">&nbsp;
                 영화감상<input type="checkbox" id="hobby3" name="hobby" value="영화감상">&nbsp;
                 요리<input type="checkbox" id="hobby4" name="hobby" value="요리"><br> 
        <input type="submit" value="전송">
    </form>
    
</body>
</html>
cs

파라미터 값을 입력받을 HTML FORM 소스이다.

 

html파일을 실행하면 아래와 같은 입력 폼이 나타날 것이다.

 

 

<form> 태그는 사용자로부터 입력 받을 수 있는 HTML 입력 폼을 정의할 때 사용한다.
HTML에서는다양한 input요소를 사용하여 입력을 받는다.

input 요소의 타입은 다음 등이 있다.

 

action 속성은 입력된 데이터를 서버로 보낼 때 데이터가 도착할 장소(URL)를 명시한다.

소스의 데이터를 채워넣고 submit타입의 전송버튼을 누를 시 action.jsp 로 데이터가 전달되어

action.jsp 페이지가 구현될 것이다.

 

다음의 method 속성은 서버에 제출할 때 사용할 HTTP 메소드를 명시한다. 속성값으로는 GET과 POST가 있다.

 

GET방식은 URL에 폼 데이터를 추가하는 방식이고

POST는 폼 데이터를 별도로 첨부하여 전달하는 방식이다.

 

form 영역 안 input 요소들에는 id와 name태그를 달아주어 외부에서(css, 자바스크립트 등) 참조하기 위해 사용한다.

 

name태그를 통해 요소의 값을 서버에 전송할 수 있으며 checkbox의 요소들은 중복이 불가능한 id값으로 구분해주었다.

(name태그는 중복 가능)

 

 


action.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
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>action4</title>
</head>
<body>
<%
    // 인자명들 집계
    Enumeration<String> keys = request.getParameterNames();
    
    while (keys.hasMoreElements()) {
    
        String key = keys.nextElement();
        
        if (key.equals("hobby")) {
            
            out.print("hobby = ");
            for (String s : request.getParameterValues("hobby")) {
                out.print(s + " ");
            }
            out.println("<br>");
            
        } else {
            out.print(key + " = " + request.getParameter(key) + "<br>");
        } //
        
    } // while
%>
</body>
</html>
cs

넘겨받은 인자를 얻기 위해서는 String 리턴 타입의 getParameter() 메소드를 사용하면 된다.

하지만 체크박스의 인자는 배열로 처리하여야 한다.

servlet api에 기술되어 있는getParameterNames() 메소드의 리턴값을 보면 Enumeration 유형으로 해당 인터페이스와 메소드를 활용하여 인자집합을 처리할 수 있을것이다.

 

Enumertation 인터페이스 메서드는 아래와 같다.

  • hasMoreElements() : 읽어올 요소가 남아있는지 확인. 있으면 true, 없으면 false. Iterator의 hasNext()와 같음
  • nextElement() : 다음 요소를 읽어 옴. Iterator의 next()와 같음

출력시킬 변수를 Enumeration형으로 선언 후 (keys)

if문을 이용하여 hobby name값이 hobby일 경우에 for문과 배열 리턴타입인 getParameterValues를 통해 인자 값을 나열할 수 있도록 작성됐고

 

name의값이 hobby가 아닐 경우 request.getParameter(key)를 통해 단순 출력하도록 하였다.

 

/*out.println() 메소드는 JSP에서 웹 화면에 출력시킬 때 사용하는 메소드이며

jsp소스에서 자바 구문을 입력하기 위해서는 <% %> 라는 jsp 태그를 사용해주어야 한다.*/

 

 

폼에 데이터를 채워넣고 전송버튼을 누르면

 

 이와 같이 인자가 잘 처리된 jsp페이지를 확인할 수 있다.

이 때 주소창을 보면 get메서드를 이용해 처리되어 url 뒤 폼데이터의 정보가 들어가있는 것을 확인할 수 있다.

 

메소드 정리

getParameter : String 형 반환

getParameterNames : Enumeration 형 반환

getParameterValues : String 배열 반환