์ธํ๋ฐ ๊น์ํ๋์ ์คํ๋ง MVC 1ํธ ๊ฐ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ ๊ธ์ ๋๋ค.
์ด์ ๊ธ์์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํด์ฃผ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋ํด ์์ฃผ ๊ฐ๋จํ๊ฒ ์์๋ณด์๋ค. ๊ทธ๋ ๋ค๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ๋ฌด์จ ์ผ์ ํ ๊น?
ํด๋ผ์ด์ธํธ๊ฐ ์๋์ ๊ฐ์ ์์ฒญ์ ๋ณด๋ด์๋ค๊ณ ์๊ฐํด๋ณด์.
POST /save HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
username=kim&age=20
๋์ถฉ ์ด๋ฆ์ด kim
์ด๊ณ ๋์ด๊ฐ 20์ธ์ธ ํ์์ ์ ๋ณด๋ฅผ ๋ฑ๋กํด๋ฌ๋ผ๋ ์์ฒญ์ด๋ค. WAS๋ ์ด ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋์ ์
๋ฌด๋ค์ ์ ๋ถ ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ๋ค.
- ํด๋ผ์ด์ธํธ์์ ์์ผ ์ฐ๊ฒฐ
- HTTP ์์ฒญ ๋ฉ์ธ์ง ํ์ฑํด์ ์ฝ๊ธฐ
- ๋งคํ ์ ๋ณด ํ์ธ
- Content-Type ํ์ธ
- ๋ฉ์ธ์ง ๋ฐ๋์ ๋ด๊ธด ํ์ ์ ๋ณด ๋ฐ์ดํฐ ํ์ฑ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ ์์ฒญ
- HTTP ์๋ต ๋ฉ์ธ์ง ์์ฑ
- ์๋ต ๋ฉ์ธ์ง ์ ๋ฌ, ์์ผ ์ข ๋ฃ
์ ์ฅ ์์ฒญ ํ๋ ์ฒ๋ฆฌํ๋๋ฐ ํด์ผ ํ ์ผ์ด ๋๋ฌด ๋ง๋ค. ๊ทธ๋์ ํฐ์บฃ๊ฐ์ WAS๋ ์๋ธ๋ฆฟ์ด๋ผ๋ ๊ฑธ ์ง์ํ๋ค.
1. ์๋ธ๋ฆฟ
(1) ์๋ธ๋ฆฟ์ด๋?
@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) {
// ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง
}
}
์๋ธ๋ฆฟ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ ์ธํ ๋๋จธ์ง ์
๋ฌด๋ฅผ ์ฒ๋ฆฌํด์ค๋ค. HttpServlet
๋ฅผ ์์๋ฐ์ผ๋ฉด ์๋ธ๋ฆฟ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
์์ ์ฝ๋๋ /hello
๋ผ๋ URL๋ก ์์ฒญ์ด ์ค๋ฉด ์คํ๋๋ ์๋ธ๋ฆฟ ์ฝ๋์ด๋ค. ๋งค๊ฐ๋ณ์๋ก๋ HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ HttpServletRequest
์ HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ HttpServletResponse
๋ฅผ ๋ฐ๊ณ ์๋ค.
(2) ์๋ธ๋ฆฟ์ ์๋ช ์ฃผ๊ธฐ
1. ์๋ธ๋ฆฟ์ ์์ฒญ์ด ์ฒ์ ์ค๋ ๊ฒฝ์ฐ
(1) ์๋ธ๋ฆฟ ํด๋์ค๊ฐ ๋ก๋๋๋ค.
(2) ์๋ธ๋ฆฟ ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ค.
(3)init()
๋ฉ์๋๋ฅผ ํตํด ์๋ธ๋ฆฟ ์ธ์คํด์ค๊ฐ ์ด๊ธฐํ๋๋ค.
2. ์๋ธ๋ฆฟ์ ์์ฒญ์ด ์ฌ ๋๋ง๋ค ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ ์ํด service()
๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
3. destroy()
๋ฉ์๋๋ฅผ ํตํด ์๋ธ๋ฆฟ ์ธ์คํด์ค๊ฐ ์ข
๋ฃ๋๋ค.
2. ์๋ธ๋ฆฟ ์ปจํ ์ด๋
์๋ธ๋ฆฟ ๊ฐ์ฒด์๋ static main()
๋ฉ์๋๊ฐ ์๊ธฐ ๋๋ฌธ์, ์ธ๋ถ ์ปจํ
์ด๋์ ์ ์ด ํ์ ํธ์ถ๋์ด์ผ ํ๋ค. ๊ทธ๋์ ํฐ์บฃ์ฒ๋ผ ์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS ๋ด์๋ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ผ๋ ๊ฒ ์กด์ฌํ๋๋ฐ, ๋ง ๊ทธ๋๋ก ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํด์ฃผ๋ ์ปจํ
์ด๋์ด๋ค. ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ง์ํ๋ค.
(1) ์๋ธ๋ฆฟ ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ
์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์์ฑ, ์ด๊ธฐํ, ํธ์ถ, ์ข ๋ฃํ๋ฉฐ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํด์ค๋ค. ์๋ธ๋ฆฟ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ์๋ธ๋ฆฟ์ด ์คํ๋ ๋ ํ์๋ก ํ๋ ๊ฒ๋ค์ ์ ๊ณตํ๋ ์ผ์ ๋ด๋นํ๋ค๋ ์๋ฏธ์ด๋ค. HTTP ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฑด ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์, ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์์๋๋ ์์ ์ ์๋ธ๋ฆฟ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋์๋ค๊ฐ ์ฌํ์ฉํ๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๋ฉด ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ํจ๊ป ์๋ฉธ๋๋ค.
(2) ๋ฉํฐ ์ฐ๋ ๋ ์ฒ๋ฆฌ ์ง์
ํ๋์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ์๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํด์ผ ํ๋ค. ๊ทธ ์ค์์๋ ๋์์ ์ค๋ ์์ฒญ๋ ์๊ธฐ ๋ง๋ จ์ด๋ค. ์ด๋ฌํ ์์ฒญ๋ค์ ๊ฐ๋นํ๊ธฐ ์ํด ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์์ฒญ๋ง๋ค ์ฐ๋ ๋๋ฅผ ํ ๋นํ์ฌ ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ง์ํ๋ค.
(3) ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ๋์ ๊ณผ์
์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์ ์๋ธ๋ฆฟ์ ์ด์ฉํด HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์น ๋ธ๋ผ์ฐ์ ์์ localhost:8080/hello
๋ก HTTP ์์ฒญ์ ๋ณด๋ธ๋ค.
2. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์์ฒญ ๋ฉ์ธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก request ๊ฐ์ฒด์ response ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ค, URL์ ๋งคํ๋๋ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ค.
3. ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ helloServlet
์ ์คํํ๋ค. ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ request ๊ฐ์ฒด์ response ๊ฐ์ฒด๋ฅผ ์๋ธ๋ฆฟ์๊ฒ ๋๊ฒจ์ค๋ค.
4. ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ด ์คํ๋๋ฉฐ, response ๊ฐ์ฒด์ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ค.
5. response ๊ฐ์ฒด์ ๋ด๊ธด ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTTTP ์๋ต ๋ฉ์ธ์ง๋ฅผ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํ๋ค.
๐กrequest, response ๊ฐ์ฒด๋ ์์ฒญ ๋ฉ์ธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฏ๋ก ๋งค ์์ฒญ๋ง๋ค ์๋ก ์์ฑ๋๋ค.
ํจ๊ป ์ฝ์ด๋ณด๊ธฐ: https://docs.oracle.com/cd/A97688_16/generic.903/a97680/overview.html
'๐๐ฉ๐ซ๐ข๐ง๐ > ๐๐๐ (๐)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HttpServletResponse ๋ฐํํ๊ธฐ (1) | 2023.11.08 |
---|---|
HttpServletRequest๋ก ์์ฒญ ๋ฐ์ดํฐ ์กฐํํ๊ธฐ (0) | 2023.10.17 |