HTTP ์์ฒญ ๋ฉ์๋๋ ์์ฒญ ์์์ ๋ํด ์น ์๋ฒ์๊ฒ ๋ด๋ฆฌ๋ ๋ช ๋ น์ด๋ค. ๋ฉ์๋์๋ GET, POST, HEAD, PUT, DELETE, TRACE, CONNECT, OPTIONS ๋ฑ์ด ์๋ค.
1. GET ๋ฉ์๋
GET ์์ฒญ์ ํน์ง
- URL์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ ๋ฐ์ดํฐ ์กฐํ์ ์ ํฉํ๋ค.
- ๋ฐ์ด๋๋ฆฌ ๋ฐ ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ก์ด ๋ถ๊ฐํ๋ค.
- ์์ฒญ ๋ผ์ธ๊ณผ ์์ฒญ ํค๋์ ์ต๋ ํฌ๊ธฐ ์ ํ์ด ์๋ค.
- ๋์ฉ๋ URL๋ก ์ธํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ๋๋ฌธ์ ์น ์๋ฒ์ ๋ฐ๋ผ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ ํํ๋ค.
GET ์์ฒญ์ ์ข ๋ฅ
- ์น ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ URL์ ์ ๋ ฅํ๋ ๊ฒฝ์ฐ
- ๋งํฌ๋ฅผ ํด๋ฆญํ๋ ๊ฒฝ์ฐ
- ์ ๋ ฅ ํผ์ method ์์ฑ๊ฐ์ด get์ธ ๊ฒฝ์ฐ
GET ์์ฒญ ๋งค๊ฐ๋ณ์ ์ธ์ฝ๋ฉ
์๋ธ๋ฆฟ ์ปจํ ์ด๋์ URI ์ธ์ฝ๋ฉ ์ค์
GET ์์ฒญ 1 - ์น ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ URL์ ์ ๋ ฅํ๋ ๊ฒฝ์ฐ
์น ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ URL์ ์ ๋ ฅํ์ฌ ์๋ฒ์ ์์์ ์์ฒญํ๋ ๊ฒฝ์ฐ GET ์์ฒญ์ด ๋ฐ์ํ๋ค.
์ฃผ์์ฐฝ์ daum.net์ ์ ๋ ฅํ๋ฉด ์์ฒญ ๋ผ์ธ์ 'GET http://www.daum.net/ HTTP/1.1'์ ๊ฐ๋ค.
GET ์์ฒญ 2 - ๋งํฌ๋ฅผ ํด๋ฆญํ๋ ๊ฒฝ์ฐ
HTML์ <a> ํ๊ทธ๋ GET ์์ฒญ์ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋งํฌ๋ฅผ ํด๋ฆญํ ๋ GET์ผ๋ก ์์ฒญํ๋ค.
GET ์์ฒญ 3 - ์ ๋ ฅ ํผ์ method ์์ฑ๊ฐ์ด get์ธ ๊ฒฝ์ฐ
์ ๋ ฅ ํผ์ method ์์ฑ๊ฐ์ด 'get'์ธ ๊ฒฝ์ฐ, ์๋ฒ์ GET ์์ฒญ์ ๋ณด๋ธ๋ค.
<form action="SomeServlet" method="get">
<!-- ... -->
</form>
method ์์ฑ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ด get์ด๊ธฐ ๋๋ฌธ์ GET์ผ๋ก ์์ฒญํ ๊ฒฝ์ฐ ์๋ตํด๋ ๋๋ค.
GET ์์ฒญ์ ๋ฐ์ดํฐ ์ ๋ฌ ํ์
GET์ผ๋ก ์์ฒญํ๋ ๊ฒฝ์ฐ ์๋ฒ์ ๋ณด๋ผ ๋ฐ์ดํฐ๋ URI์ ๋ถ์ธ๋ค.
์ : http://localhost:8080/web02/CalculatorServlet?v1=1&op=%2B&v2=1
? : URI์ ๋ณด๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถ
& : ๋ฐ์ดํฐ๋ค์ ๊ตฌ๋ถ
= : ๋งค๊ฐ๋ณ์ ์ด๋ฆ๊ณผ ๊ฐ์ ๊ตฌ๋ถ
GET์ ์ฌ์ฉ
- ์๋ฃ ๊ฒ์
- ๊ฒ์๊ธ ์กฐํ
- ํน์ ์ํ์ ์ ๋ณด ์กฐํ
์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒฝ์ฐ์ ์ ํฉํ๋ค.
URL์ ๊ฒ์์ด๋ ๊ฒ์๊ธ ๋ฒํธ, ์ํ ๋ฒํธ๋ฅผ ํฌํจํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ์ผ์ด๋ ๋ฉ์์ง๋ฅผ ํตํด ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ ๋ฌํ๊ธฐ ์ฝ๋ค. ๋ํ '์ฆ๊ฒจ์ฐพ๊ธฐ'์ ์ ์ฅํด๋์ด ์ธ์ ๋ ์ง ํด๋น ํ์ด์ง๋ก ๋ฐ๋ก ์ ๊ทผํ ์ ์๋ค.
GET ์์ฒญ ๋งค๊ฐ๋ณ์ ์ธ์ฝ๋ฉ
GET ์์ฒญ์ ๋งค๊ฐ๋ณ์ ๊ฐ์ด URI์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ง์นจ์ ๋ฐ๋ผ URI์ ์ธ์ฝ๋ฉ์ ์ค์ ํด์ผ ํ๋ค.
ํฐ์บฃ ์๋ฒ์์ URI ์ธ์ฝ๋ฉ์ ์ค์ ํ๋ ค๋ฉด server.xml์ ์ด๊ณ <Connector>์ URIEncoding="UTF-8"์ ์ถ๊ฐํ๋ค.
GET์ ๋ฌธ์ ์ ๊ณผ ๊ฐ์ ๋ฐฉ์
1. ๋ณด์ ๋ฌธ์
GET ์์ฒญ์ ์ฃผ์์ฐฝ์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ ๋ณด๊ฐ ๊ทธ๋๋ก ๋ ธ์ถ๋๋ค.
2. ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์ ์ก ๋ถ๊ฐ
๋น์ฐํ ์ด๋ฏธ์ง, ๋์์๊ฐ์ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ๋ฐ์ดํฐ๋ URL์ ๋ถ์ฌ์ ๋ณด๋ผ ์ ์๋ค. ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํด๋ URI๋ ํค๋ ์ ๋ณด๊ฐ ๋๋ฌด ํฌ๋ฉด ์น ์๋ฒ์์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋ฅํ๋ค.
์ด์ ๊ฐ์ ๋ฌธ์ ๋ POST ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ค.
2. POST ๋ฉ์๋
POST ์์ฒญ์ ํน์ง
- URL์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ง ์์ ์ธ๋ถ์ ๋ ธ์ถ๋์ง ์๋๋ค.
- ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ค.
- ๋ฐ์ด๋๋ฆฌ ๋ฐ ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค.
POST ์์ฒญ ๋งค๊ฐ๋ณ์ ์ธ์ฝ๋ฉ
ServletRequest.setCharacterEncoding() ์ฌ์ฉ
POST ๋ฐฉ์์ผ๋ก ์ ๋ฌํ๋ ค๋ฉด <form> ํ๊ทธ์ method ์์ฑ์ 'post'๋ก ์ง์ ํ๋ค.
<form action="SomeServlet" method="post">
<!-- ... -->
</form>
POST ์์ฒญ์ HTTP ์์ฒญ ์ ๋ณด ์
POST http://localhost:8080/web02/LoginServlet HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 24
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Referer: http://localhost:8080/web02/PostTest.html
Accept-Encoding: gzip, deflate, br
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
id=abc123&password=1234*
์ฒซ ๋ฒ์งธ ์์ฒญ ๋ผ์ธ์ ๋ฉ์๋๊ฐ 'POST'๋ก ์ง์ ๋์ด ์๋ค.
๋ณด๋ด๋ ๋ฐ์ดํฐ์ ๊ธธ์ด๋ฅผ ์๋ ค์ฃผ๋ Content-Length ํค๋์ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ ํ์์ ์๋ ค์ฃผ๋ Content-Type ํค๋๊ฐ ๋ถ๋๋ค. <form> ํ๊ทธ์ ์ ๋ ฅ๊ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก application/x-www-form-urlencoded ํ์์ผ๋ก ๋ณด๋ด์ง๋ค.
์๋ฒ์ ๋ณด๋ด๋ ๋ฐ์ดํฐ๋ ๊ณต๋ฐฑ ๋ผ์ธ ๋ค์์ Message Body์ ์์นํ๋ค. (id=abc123&password=1234*)
GET ์์ฒญ์ ๋ฐ์ดํฐ๊ฐ URL์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ ์ฌ์ฉํ์ง ์๋๋ค.
POST ์์ฒญ ๋งค๊ฐ๋ณ์ ์ธ์ฝ๋ฉ
ServletRequest ๊ฐ์ฒด์ setCharacterEncoding()์ ์ฌ์ฉํ๋ค.
ServletRequest.setCharacterEncoding() :
POST ์์ฒญ์ ๋งค๊ฐ๋ณ์์ ๋ฌธ์ ์งํฉ์ ์ค์ ํ๋ค. ๊ธฐ๋ณธ๊ฐ์ ISO-8859-1์ด๋ค.
getParameter()๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ๋ค.
POST์ ๋ฌธ์ ์ ๊ณผ ๊ฐ์ ๋ฐฉ์
GET ๋ฉ์๋์ ๋ง์ฐฌ๊ฐ์ง๋ก POST๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ๋ '์ด๋ฆ=๊ฐ&์ด๋ฆ=๊ฐ' ํํ๋ฅผ ์ฌ์ฉํ๋ค. ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ๋๋ ๋ฌธ์ ๊ฐ ์๋ค. ๊ทธ๋ฌ๋ ํ์ผ ์ ๋ก๋์ ๊ฐ์ด ์ด๋ฏธ์ง๋ ๋์์๊ฐ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ๋๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์์ '='๋ '&'๋ฅผ ํฌํจํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋๋ ๋ฉํฐํํธ ์ธ์ฝ๋ฉ ๋ฑ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
'Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Eclipse ์น ํ๋ก์ ํธ IntelliJ๋ก import ํ๋ ๋ฐฉ๋ฒ (2) | 2020.02.07 |
---|---|
์น ์ดํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ - ์ดํด๋ฆฝ์ค ์๋ ๋ฐฐํฌ์ WAR ๋ฐฐํฌ (1) | 2020.02.04 |
๊ธฐ๋ณธ ์น ํ์ด์ง - web.xml ์ฐ์ปด ํ์ผ ์ค์ ํ๊ธฐ (0) | 2020.02.04 |
[Eclipse] Dynamic Web Project ํ๋ก์ ํธ ๊ตฌ์กฐ (4) | 2020.02.04 |
Java EE์ Servlet/JSP์ ๊ด๊ณ์ WAS ๊ฐ๋ ์ ๋ฆฌ (0) | 2020.02.03 |
๋๊ธ