본문 바로가기

[Servlet] GET & POST

인포꿀팁 발행일 : 2020-11-24

Method 란?

  • HTTP 프로토콜을 사용하여 클라이언트에서 서버로 요청을 보내는 방법을 method라고한다.
  • 메소드에는 GET/POST/PUT/DELETE/HEAD 등이 있으며 HTML5 에서는 PUT/DELETE는 지원하지 않는다.
  • 보통 웹 서비스는 GET/POST만 사용하여 개발한다.
  • HTTP 메세지는 요청라인과 상태라인에 의해서 요청 메세지와 응답메세지로 나눌 수 있다.

HTTP GET 방식

  • GET은 디폴트 전송 방식으로 Request header 에 정보를 실어서 보내는 특징이 있다.
  • 데이터 전송 방식은 브라우저 주소란에 기입하는 URL 뒤에 ? 물음표를 붙이고 요청하는 파라미터를 이름과 값을 쌍을 이루어 붙인다. 이름이 여러개인 경우 &로 구분한다.
http://host/path?이름1=값1&이름2=값2

특징

  • URL에 정보가 노출되어 요청 파라미터를 사용자가 쉽게 눈으로 확인할 수 있어 보안에 취약하다.
  • URL로 파라미터를 전송하므로 대용량 정보를 전송할 수 없다.
  • GET은 정보를 조회하기 위한 메소드로 GET 메소드로 서버에 요청하여 응답을 받으면 브라우저에서 해당 요청에 대한 응답을 캐시하므로 사용자의 불필요한 네트워크 이용을 줄여서 빠르게 조회할 수 있다.
  • URL 및 요청 파라미터 최대 길이
    • IE의 최대 길이는 2083자이고 최대 경로 길이는 2048자이다. GET 메소드를 사용하는 경우 요청 파라미터는 실제 경로의 문자 수를 뺀 최대 2048자로 제한된다.

 

HTTP POST 방식

  • POST는 서버로 데이터를 전송하기 위해 설계되었기 때문에 GET과 달리 파라미터가 URL로 넘어가지 않고 HTTP 패킷의 Body에 담아서 파라미터를 전송한다.
  • body에 담아서 서버에 전송하므로 전송하는 길이에 제한 없이 대용량 데이터를 전송하는데 적합하다.
  • POST로 요청할 때 Request header의 Content-Type에 해당 데이터 타입이 표현되며, 전송하고자 하는 데이터 타입을 적어줘야한다. 타입을 적어주지 않으면 서버에서 내용이나 URI의 이름의 확장명 등으로 타입을 유추하거나 application/octet-stream으로 처리한다.
  • POST request는 보통 HTML form을 통해서 서버에 전송한다.
<form method="post"> ~~ </form>

 

 

두 방식의 차이점

1) GET은 멱등(연산을 여러번해도 변하지 않음) 이지만, POST는 아니다.

2) GET방식으로 서버에 해당 요청을 여러번 하더라도 동일한 응답이 돌아오는 것을 의미하며, POST는 Non-idempotent하기 때문에 서버에 해당 요청을 여러번할 경우 응답이 항상 동일하다고 볼 수 없다.

3)GET 요청은 브라우저에 캐싱할 수 있지만 POST는 할 수 없다.

4) 전송속도는 GET이 POST보다 빠르다.

5) history back 시 get은 이전데이터를 post는 새로 요청한다.

6) GET은 요청(request data)이고 post는 제출(submit data)이다.

7) GET은 서버의 데이터를 SELECT 하는데 적합하며 POST는 서버의 값이나 상태를 바꾸는데 사용(INSERT/DELETE/UPDATE)한다.

'Web > JSP&SERVLET' 카테고리의 다른 글

[Servlet] 세션 : Session  (0) 2020.11.26
[Servlet] 필터 : Filter  (0) 2020.11.11
[Servlet] 쿠키 : Cookie  (0) 2020.11.10
[Servlet] 서블릿 이란?  (0) 2020.11.06
[WEB] URL과 URI  (0) 2020.10.28

댓글