1. GET 방식
GET 방식은 URL과 쿼리 스트링(Query String)을 이용하여 데이터를 전달합니다. 쿼리 스트링이란 URL에서 '?' 문자 이후의 문자열을 말하며, URL에 지정된 문서로 전달되는 데이터로 구성됩니다.
GET 방식으로 전달되는 구문의 구조를 알아보겠습니다.
■ GET 방식의 전달 구조
http://서버 이름/요청 문서?쿼리 스트링
쿼리 스트링을 구성하는 데이터들은 파라미터와 값의 쌍으로 표현됩니다. 만약, 전달되는 데이터가 하나 이상일 경우 각 파라미터와 값의 쌍을 '&' 기호로 구분해 표현해야 합니다.
GET 방식으로 데이터를 전달하는 예시를 알아보겠습니다.
■ GET 방식의 전달 예시
httpL//localhost:8080//exam.jsp?id=Lee&age=20
이 예시는 Lee라는 값을 가지는 id 파라미터와 20이라는 값을 가지는 age 파라미터를 exam.jsp 문서에 전달하는 예입니다. 이처럼 GET 방식은 <form> 태그가 존재하지 않는 문서가 다른 문서로 데이터를 전달할 때 사용됩니다.
다음에 배울 POST 방식은 전달되는 데이터가 URL에 노출되지 않지만, GET 방식은 전달되는 데이터가 URL에 노출됩니다.
2. POST 방식
클라이언트에서 웹 서버로 전달되는 HTTP 요청은 Header와 Body로 구성되는데, POST 방식은 데이터가 Body에 포함되어 전송됩니다. 따라서 POST 방식은 한 번에 전달되는 데이터의 양에 제한이 없습니다.
<form> 태그를 이용해 데이터를 전달하려면 POST 방식을 사용해야 합니다.
<form> 태그의 구조를 알아보겠습니다.
■ <form> 태그의 구조
<form name="이름" method="요청 방식" action="요청 대상" enctype="인코딩 방식">구성요소</form>
1) name 속성
하나의 JSP 문서에는 하나 이상의 <form> 태그가 존재할 수 있습니다. name 속성은 <form> 태그를 구분할 수 있는 식별자 역할을 합니다.
2) method 속성
요청 방식을 지칭하는 속성입니다. <form> 태그를 이용해 요청하는 경우 post를 지정해야 합니다.
3) action 속성
클라이언트가 요청하는 문서를 지칭하는 속성입니다. <form> 태그의 요소에 입력된 값은 action 속성으로 지정된 문서로 전달됩니다.
4) enctype 속성
POST 방식이 데이터를 HTTP 요청의 Body에 포함해 전송한다고 해도 데이터가 그대로 전송되지는 않습니다. POST 방식은 enctype 속성으로 지정한 인코딩 방식을 사용해 데이터를 인코딩해 전달합니다.
POST 방식으로 데이터를 전달하는 예를 알아보겠습니다.
<form name="name" method="post" action="exam.jsp">
아이디 : <input type="text" name="userId">
패스워드 : <input type="text" name="userPw">
<input type="submit" value="login">
</form>
사용자가 입력한 아이디와 패스워드는 submit이 발생하면 exam.jsp 문서로 전달됩니다. 아이디와 패스워드가 전달되기 위해서는 파라미터가 필요합니다. 파라미터의 이름은 <input> 태그의 name 속성으로 지정합니다. 즉, 아이디는 userId라는 파라미터에 저장되고, 패스워드는 userPw 파라미터에 저장되어 exam.jsp 문서로 전달됩니다.
3. GET 방식과 POST 방식의 비교