GET
전송할 HTTP 방식의 기본 값
클라이언트가 서버로 데이터를 요청하기 위해서 사용하는 요청방식
데이터의 흐름은 서버에서 클라이언트 [ 클라이언트 ← 서버 ]
- 폼 데이터를 URL 끝에 붙여서 전송시킨다
- 웹 브라우저의 주소 표시줄에 그대로 나타난다 (보안에 취약)
- 구분자로 '?' 를 사용하여 URL뒤에 name=value와 같은 형식의 요청 파라미터를 붙이기 때문에 URL과 요청 파라미터를 구분
- 여러 개의 요청 파라미터를 전송할 경우에는 '&'를 사용하여 연결한다
- 서버로 전송하는 데이터의 크기에 제한이 있다
GET 방식 요청의 예시
- 웹브라우저의 주소창에 주소를 직접 입력하고 요청하는 경우
- 링크를 클릭해서 다른 주소를 요청하는 경우
- <form method="get">으로 설정되어 있고, submit 버튼 클릭해서 값을 제출하는 경우 (폼의 입력양식의 값들이 검색조건으로 사용되는 경우)
<form method="GET" action="search.jsp">
<input type="text" name="keyword" placeholder="검색어를 입력하세요" />
<button type="submit">검색</button>
</form>
<!-- 위와 같이 작성된 웹 페이지에서 검색버튼을 클릭했을 때 -->
GET 방식 요청일 때 요청 메세지 예시
GET search.jsp?keyword=자바 HTTP/1.1
Accept=text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Encoding=gzip, deflate, br
Accept-Language=ko,en;q=0.9,en-US;q=0.8
POST
클라이언트가 서버로 데이터를 전송해서 리소스를 추가하거나 생성하기 위해서 사용하는 요청방식
데이터의 흐름은 서버에서 클라이언트 [ 클라이언트 → 서버 ]
- 요청메세지의 바디부에 데이터가 포함되어 전달되기 때문에 상대적으로 보안이 우수
- 서버로 전송하는 데이터의 크기에 제한이 없다
- enctype에 따라서 서버로 보내는 데이터의 형식이 달라진다
enctype에 따라서 서버로 보내는 데이터의 형식이 달라진다
<form method="post" enctype="application/x-www-form-urlencoded">
- enctype을 설정하지 않으면 기본값이 application/x-www-form-urlencoded
- 요청메세지의 바디부에 포함되어 서버로 전달되는 값이 name=value&name=value&name=value
- 첨부파일을 업로드하지 않는 경우 사용한다
<form method="post" enctype="multipart/form-date">
- 첨부파일을 업로드하는 경우 사용하는 데이터 전달형식이다
- 요청메세지의 바디부에 포함되어 서버로 전달되는 값
- 서버로 전달된 요청파라미터값, 첨부파일을 처리하기 위해서는 멀티파트요청을 처리하는 API 혹은 외부 라이브러리를 사용해야 한다
POST 방식 요청의 예시
- <form method="post">로 설정되어 있고, submit 버튼을 클릭해서 값을 제출하는 경우
- 폼의 입력양식의 값들이 리소스를 추가하거나 생성하기 위해서 사용되는 경우
<form method="POST" action="register.jsp">
<input type="text" name="name" placeholder="이름을 입력하세요" />
<input type="text" name="id" placeholder="아이디를 입력하세요" />
<input type="password" name="pwd" placeholder="비밀번호를 입력하세요" />
<input type="text" name="tel" placeholder="전화번호를 입력하세요" />
<input type="text" name="email" placeholder="이메일을 입력하세요" />
<input type="text" name="zipcode" placeholder="우편번호를 입력하세요" />
<input type="text" name="address" placeholder="주소를 입력하세요" />
<button type="submit">회원가입</button>
</form>
<!-- 위와 같이 작성된 웹 페이지에서 회원가입버튼을 클릭했을 때 -->
POST 방식 요청일 때 요청 메세지 예시
POST register.jsp HTTP/1.1
Accept=text/html,application/xhtml+xml,application/xml;q=0.9,
Accept-Encoding=gzip, deflate, br
Accept-Language=ko,en;q=0.9,en-US;q=0.8
name=홍길동&id=hong&pwd=zxcv1234&tel=010-1234-5678&email=hong@gmail.com
요청 메세지의 바디부에 폼입력값이 포함되어 있다
GET과 POST 비교
구분 | GET 방식 | POST 방식 |
전송형태 | 이름과 값의 형태로 URL에 포함되어 전송 | HTTP 헤더속에 감춰서 전송 |
전송량 | 제한적(4,096B) | 제한 없음 |
속도 | 빠름 | 느림 |
보안 | 없음 | 있음 |
MIME(Multipurpose Internet Mail Extensions) Type
문서, 파일 바이트 집합의 성격과 형식을 나타내는 정보
MIME 타입의 구조
type/subtype
- MIME 타입의 슬래시(/)로 구분된 'subtype'으로 구성된다
- type은 text, image, video와 같은 데이터 타입이 속하는 일반적인 카테고리를 나타낸다
- submit은 MIME타입이 나타내는 지정된 타입의 정확한 데이터 종류를 식별한다
text/plain | text/html | text/css | image/jpg | image/png | image/gif |
type의 구조
application
- 모든 종류의 바이너리 데이터
- 이 바이너리 데이터를 어떤 방식으로든 실행하거나 해석되기 위해서는 특정 애플리케이션을 사용해야 한다
- 예시 : application/octet-stream , application/pdf , application/zip
text
- 사람이 읽을 수 있는 텍스트 컨텐츠, 소스코드 또는 쉼표로 구분된 CSV 형태의 데이터와 같은 텍스트 형식의 데이터
- 예시 : text/plain , text/csv , text/html
image
- 비트맵과 벡터 이미지를 모두 포함하는 이미지 또는 그래픽 애니메이션 데이터다
- 예시 : image/jpeg , image/png , image/svg+xml
주요 MIME타입
application/octet-stream
- 바이너리 파일을 위한 기본값. '알려지지 않은' 바이너리 파일을 의미한다
- 타입이 알려지지 않은 첨부 파일을 다운로드할 때 응답컨텐츠의 타입으로 설정할 수 있다
application/x-www-form-urlencoded
- 브라우저에서 서버로 폼입력값을 전송할 때 요청 메세지의 바디부에 포함된 데이터의 형식을 지정할 때 사용
- 폼 입력값이 name=value&name=value&name=value와 같은 형식
multipart/form-date
- 브라우저에서 서버로 폼 입력값을 전송할 때 요청메세지의 바디부에 포함된 데이터의 형식을 지정할 때 사용
- 폼입력값이 아래와 같은 형식을 가진다
------WebKitFormBoundaryNHRNFTOBhiYA2zcQ
Content-Disposition: form-data; name="title"
aaa
------WebKitFormBoundaryNHRNFTOBhiYA2zcQ
Content-Disposition: form-data; name="description"
bbb
------WebKitFormBoundaryNHRNFTOBhiYA2zcQ
Content-Disposition: form-data; name="upfiles"; filename="sql-map-2.dtd"
Content-Type: application/octet-stream
------WebKitFormBoundaryNHRNFTOBhiYA2zcQ
text/plain
- 텍스트파일에 대한 기본값
text/css
- 웹페이지의 스타일을 지정하는 CSS 파일은 text/css 타입으로 지정해야 한다
text/html
- 모든 HTML 컨텐츠에 타입을 나타낸다
text/javascript
- 자바스크립트를 나타낸다
text/xml
- 모든 XML 컨텐츠 타입을 나타낸다
- XML은 서로 다른 시스템 간의 데이터 교환용 문서를 만들때 사용되는 데이터 표현형식이다
application/json
- JSON 컨텐츠 타입을 나타낸다
- JSON은 서로 다른 시스템 간의 데이터 교환용 문서를 만들때 사용되는 데이터 표현형식이다
- JSON은 XML에 비해 경량의 데이터 교환 형식
'Web' 카테고리의 다른 글
프로젝트에서 톰캣설정 (0) | 2024.01.26 |
---|---|
JDBC 프로젝트 개발순서 (0) | 2024.01.26 |
Web_Servlet (0) | 2024.01.15 |
JSP_JSP와 JSP 구성요소 및 내장객체 (1) | 2024.01.05 |
Web_웹 애플리케이션 개요 (1) | 2024.01.03 |