본문으로 바로가기

파라미터 전송 - GET, POST 방식

category 코딩/JSP 2016. 11. 7. 11:18





웹페이지에서 데이터를 전송할 때 2가지 방식이 있다. get 방식과 post 방식이다. 각각의 차이는 소스코드를 통해 알아보자. 




GET 방식


  • parameter01.jsp


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ 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>parameter01.jsp 파리미터값 입력 페이지</title>
</head>
<body>
<!-- get 방식을 사용해서 데이터 전송 (method="get") -->
    <form action="parameter02.jsp" method="get">
        이름 : <input type="text" name="name" size="10"><br>
        주소 : <input type="text" name="address" size="30"><br>
        취미 :
            <input type="checkbox" name="hobby" value="game">게임
            <input type="checkbox" name="hobby" value="travel">여행
            <input type="checkbox" name="hobby" value="reading">독서
            <br>
        <input type="submit" value="전송">
    </form>
</body>
</html>
cs


  • parameter02.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
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    // 인코딩
    request.setCharacterEncoding("euc-kr");
%>
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>parameter02.jsp 파리미터값 출력 페이지</title>
</head>
<body>
    이름 : <%= request.getParameter("name"%><br>
    주소 : <%= request.getParameter("address"%><br>
    취미 : 
    <%
        // 체크박스는 배열로 처리해야 한다.
        String[] values = request.getParameterValues("hobby");
        if(values != null){
            for(int i=0; i<values.length; i++){        
    %>
        <%=values[i] %>
    <%                        
            }
        }
    %>
</body>
</html>
cs



먼저 get 방식에 대해 알아보자. 위의 parameter01.jsp를 실행하면 아래와 같은 모습의 입력 폼이 나올 것이다.





이름과 주소, 그리고 취미를 선택하고 전송 버튼을 누르면 입력한 데이터가 parameter02.jsp로 전달된다.






위에 사진에서 주소창을 확인해 보자. parameter02.jsp? 뒤에 무언가 붙어있는 것을 확인할 수 있다. 바로 입력한 데이터이다. get 방식은 입력한 데이터 값을 URL에 붙여서 전송하는 것이다.




POST 방식


  • parameter01.jsp


1
2
3
4
5
6
7
8
9
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>parameter01.jsp 파리미터값 입력 페이지</title>
</head>
<body>
    <!-- post 방식을 사용해서 데이터 전송 (method="post") -->
    <form action="parameter02.jsp" method="post">
        이름 : <input type="text" name="name" size="10"><br>
        주소 : <input type="text" name="address" size="30"><br>
        취미 :
            <input type="checkbox" name="hobby" value="game">게임
            <input type="checkbox" name="hobby" value="travel">여행
            <input type="checkbox" name="hobby" value="reading">독서
            <br>
        <input type="submit" value="전송">
    </form>
</body>
</html>
cs


  • parameter02.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
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    // 인코딩
    request.setCharacterEncoding("euc-kr");
%>
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>parameter02.jsp 파리미터값 출력 페이지</title>
</head>
<body>
 
    이름 : <%= request.getParameter("name"%><br>
    주소 : <%= request.getParameter("address"%><br>
    취미 : 
    <%
        // 체크박스는 배열로 처리해야 한다.
        String[] values = request.getParameterValues("hobby");
        if(values != null){
            for(int i=0; i<values.length; i++){        
    %>
        <%=values[i] %>
    <%                        
            }
        }
    %>
</body>
</html>
cs



parameter01.jsp을 실행시켜 데이터를 입력 후 전송버튼을 눌러보자. 






그리고 주소창을 확인해 보자. get 방식과 달리 post 방식은 주소창에 뭔가 붙어있지 않다. get 방식과 달리 post 방식은 입력한 데이터를 본문에 포함해서 전송하기 때문이다.




 GET, POST의 차이점



소스코드를 통해 두가지 방식을 확인해 보았다. 차이점에 대해 정리를 해보면 이렇다.



<GET 방식>

  • 입력한 데이터를 URL에 붙여서 전송한다. 데이터가 다 보이므로 보안에 취약하다.

  • 전송할 수 있는 데이터는 256바이트를 넘을 수 없다.

  • 전송속도는 POST방식 보다 빠르다.


<POST방식>

  • 입력한 데이터를 본문안에 포함해서 전송한다.

  • 입력한 데이터가 URL에 보이지 않으므로 GET방식 보다 보안에 우수하다.

  • 전송할 데이터의 길이에 제한이 없다.

  • 복잡한 형태의 데이터를 전송할 때 유용하다.




RSS구독 링크추가 트위터 이메일 구독