상세 컨텐츠

본문 제목

파라미터 GET & POST 방식을 이해하는 법

JAVA

by 비전공자111 2023. 4. 25. 13:10

본문

강사님은 말하셨지 Parameter를 이해하라고~

하지만 수강 당시 나는 이해하지 못했고, 물러설 수 없는 지경에 왔다.

그래서 시작하는 GET & POST 방식의 이해

 

웹페이지에서 데이터를 전송할 때에는 2가지 방식이 있다. 

1. GET

2. POST

 

다음 예시를 통해 그 차이를 알아보자.


GET 방식

STEP1. 파라미터 값을 입력하는 get1파일을 작성해준다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>GET 방식 파리미터값 입력 페이지</title>
</head>
<body>
	<!-- form 태그 get 방식을 사용해서(method="get") get2.jsp로 데이터 전송을 한다.  -->
	<form action="get2.jsp" method="get">
	    이름 : <input type="text" name="name" size="10"><br>
	    주소 : <input type="text" name="address" size="30"><br>
	    취미 :
        	<!-- name은 같은데 value가 다른 점 주목  -->
	        <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>

STEP2. 파라미터 값을 받아주는 get2파일을 작성해준다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>GET 방식 파리미터값 출력 페이지</title>
</head>
<body>
    <!-- 파라미터는 name값으로 getParameter를 통해 가져온다 -->
    이름 : <%= request.getParameter("name") %><br>
    주소 : <%= request.getParameter("address") %><br>
    취미 : 
    <%
        // 체크박스는 배열로 처리해야 한다.
        <!-- value는 value값으로 getParameterValues를 통해 가져온다 -->
        String[] values = request.getParameterValues("hobby");
        if(values != null){
            for(int i=0; i<values.length; i++){        
    %>
        <%=values[i] %>
    <%                        
            }
        }
    %>
</body>
</html>

STEP3. 프로젝트를 서버에서 돌려준다.

STEP4. 그럼 이런 화면이 나타난다.

로컬에서 parameter라는 프로젝트의 get1.jsp를 불러왔기 때문에
링크가 http://localhost:8080/parameter/get1.jsp 로 노출되고 있다.

STEP5. 다음과 같이 적어주고 전송을 눌러준다.

STEP6. 받아온 파라미터 값을 확인한다.

이 때, URL을 확인하면 받아온 파라미터 값이 URL에도 들어가는 것을 확인할 수 있다.

GET 방식은 입력한 데이터 값을 URL에 붙여서 서버에 전송하는 것이다.

+ parameter에 한글을 추가하면 결과 페이지에서 한글이 깨질 때가 있다.

GET 방식일 경우 xml에 코드를 추가해줘야 한다. 이클립스를 실행시키면 Project Explorer에 Servers가 있을 겻이다. 여기에 있는 server.xml 파일을 연다. 참고로 톰캣이 설치된 폴더를 통해서도 server.xml에 접근이 가능하다. 아래 경로를 확인해 보면 server.xml이 있을 것이다.

server.xml을 보면 아래와 같은 부분이 있을 것이다.

<Connector URIEncoding="euc-kr" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

여기에 URIEncoding="euc-kr" 라는 코드를 추가하면 된다.

<Connector URIEncoding="euc-kr" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

POST 방식

STEP1. get1과 get2 파일을 복사하여 post1, post2로 바꿔준 후,  method도 get에서 post로 변경해준다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>POST 방식 파리미터값 입력 페이지</title>
</head>
<body>
	<!-- form 태그 post 방식을 사용해서(method="post") post2.jsp로 데이터 전송을 한다.  -->
	<form action="post2.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>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>POST 방식 파리미터값 출력 페이지</title>
</head>
<body>
  <!-- 파라미터는 name값으로 가져온다 -->
    이름 : <%= 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>

STEP2. 서버를 run해준 후, 입력 값을 넣어주고 전송을 눌러준다. 

STEP3. 다음과 같이 적어주고 전송을 눌러준다.

이 때, get방식과 달리 post방식은 값이 URL에 없는 것을 확인할 수 있다.

+ parameter에 한글을 추가하면 결과 페이지에서 한글이 깨질 때가 있다.  post방식일 경우, 파라미터를 받는 페이지에서 인코딩 처리를 해야 한다. 여기서는 post2.jsp 가 파라미터를 받는 페이지이므로 여기서 처리를 해야 한다.

 

<%
    // 인코딩
    request.setCharacterEncoding("euc-kr");
%>

<GET 방식>

  • 입력한 데이터를 URL에 붙여서 전송한다. 데이터가 다 보이므로 보안에 취약하다.
  • 전송할 수 있는 데이터는 256바이트를 넘을 수 없다.
  • 전송속도는 POST방식 보다 빠르다.

 

<POST방식>

  • 입력한 데이터를 본문안에 포함해서 전송한다.
  • 입력한 데이터가 URL에 보이지 않으므로 GET방식 보다 보안에 우수하다.
  • 전송할 데이터의 길이에 제한이 없다.
  • 복잡한 형태의 데이터를 전송할 때 유용하다.

관련글 더보기