HTML, CSS, JS == ์นํ์ด์ง
โซ ์ ์ ์๋น์ค ์๋ฒ โท ์น์๋ฒ(์ํ์น ์๋ฒ, ์์ง์์ค NGINX)
โซ ๋์ ์๋น์ค ์๋ฒ โท WAS(Web Application Server) or ์๋ธ๋ฆฟ์ปจํ ์ด๋
: ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ํ์ด์ง(=์น ์๋น์ค)๋ฅผ ์๋ฐ์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ๋ก ํํํ๋(๋ง๋๋) ๊ฒ Servlet!
๐ ํน์ง
โซ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํด ๋์ ์ผ๋ก ์๋ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ปดํฌ๋ํธ.
โทํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํ ์๋ฒ ์๋ต ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ํ๋ฉด(์ ์ )์ด ์๋ ์์ฒญ์ ๋ฐ์ ๋ ๋ง๋ค ์๋ง์ ํ๋ฉด์ ๋ง๋ค์ด(๋์ ) ์๋ตํจ.
๐ Servlet ๋์ ๋ฐฉ์

- ์ฌ์ฉ์(ํด๋ผ์ด์ธํธ)๊ฐ URL(Uniform Resource Locator)์ ํด๋ฆญํ๋ฉด HTTP Request(์์ฒญ)๋ฅผ Servlet Container๋ก ์ ์ก
- Http Request๋ฅผ ์ ์ก ๋ฐ์ Servlet Container๋ ์๋ ๋ ๊ฐ์ฒด๋ฅผ ์์ฑ
HttpServletRequest(์์ฒญ ๊ด๋ จ ๋ด์ฉ์ด ์ ์ฅ๋ ๊ฐ์ฒด),
HttpServletResponse(์๋ต ๊ด๋ จ ๋ด์ฉ์ด ์ ์ฅ๋ ๊ฐ์ฒด)- DD (๋ฐฐํฌ์์ ์, Deployment Descriptor) = web.xml์ ์ฌ์ฉ์๊ฐ ์์ฒญํ URL์ ๋ถ์ํ์ฌ ์ด๋ค ์๋ธ๋ฆฟ ํด๋์ค์ ์์ฒญ ๋ด์ฉ์ ์ ๋ฌํ ์ง ์ฐพ์
- ํด๋น ์๋ธ๋ฆฟ์์ init() ๋ฉ์๋๋ฅผ ๋จผ์ ํธ์ถํ ํ service() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ ์ก ๋ฐ์ ๋ฐฉ์์ธ GET, POST ์ฌ๋ถ์ ๋ฐ๋ผ ํด๋น ๋ฉ์๋(doXXX()) ๋ฅผ ํธ์ถํจ.
- doGet() / doPost() ๋ฉ์๋๋ ๋์ ํ์ด์ง๋ฅผ ์์ฑ ํ HttpServletResponse๊ฐ์ฒด์ ์๋ต์ ๋ณด๋
- ์๋ต ์ข ๋ฃ ์ HttpServletRequest, HttpServletResponse ๊ฐ์ฒด ์๋ฉธ
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์์ฒญ์ ๋ฐฉ๋ฒ์๋ Get / Post ๋ฐฉ์์ด ์๋ค!
:(๋ฐ์ดํฐ๋ฅผ) ๊ฐ์ ธ์ค๋ค, ์ป์ด์ค๋ค
โซ URL์ ๋ณ์(๋ฐ์ดํฐ)๋ฅผ ํฌํจ์์ผ ์์ฒญ
๋ณด์ ์ ์ง๋ฅผ ์ ํ๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ์ธ ๊ฐ์ ๊ฒฝ์ฐ๋ get๋ฐฉ์์ผ๋ก ํ๋ฉด ๋ถ์ ํฉ..!
why? ์ฃผ์์ฐฝ์ ์ฌ์ฉ์์ ๊ฐ์ด ๋ค ๋ ธ์ถ๋๊ธฐ ๋๋ฌธ์! ๋ณด์์๋ ์ทจ์ฝํ๋ค ๐ฅ ๊ทธ๋์ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ == ํ์ด์ง ์ด๋)
โซ ๐ ๋ง์ฝ ์ด์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ๊ฒฝ์ฐ์๋ HTTP Header์ ํฌํจํ์ฌ ์ ์กํ๋ฉด,
GET๋ฐฉ์์์ ๋ฐ๋๋ ๋ณดํต ๋น ์ํ๋ก ์ ์ก ๋๋ฉฐ ํค๋์ ๋ด์ฉ ์ค Body์ ๋ฐ์ดํฐ๋ฅผ ์ค๋ช ํ๋ Content-typeํค๋ํ๋๋ ๋ค์ด๊ฐ์ง ์์
โซ ์ ์กํ๋ ๊ธธ์ด ์ ํ(๋ณด๋ด๋ ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ๋ฉด ์ด๊ณผ๋ฐ์ดํฐ๋ ์ ๋จ๋จ)
โซ ์บ์ฑ ๊ฐ๋ฅ (ex. ์ฆ๊ฒจ์ฐพ๊ธฐ, ๋ถ๋งํฌ)
(ํ๋ฒ ์ ๊ทผ ํ, ๋ ์์ฒญํ ์ ๋น ๋ฅด๊ฒ ์ ๊ทผํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ์์ผ ๋๋ ๊ฒ)
๐โโ๏ธ ์ฌ๊ธฐ์ ์ ๊น?
url+/+?+๋ณ์๋ช +๋ณ์๋ช + ๋ณ์๊ฐ์์?๋ค์ ๋ถ๋ ๊ฒ์ queryString๋ผ๊ณ ํ๋ค.
: (๋ฐ์ดํฐ๋ฅผ) ๋ถ์ด๋ค
โซ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์ถํ์ฌ ์ถ๊ฐ ๋๋ ์์ ํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ์์ธ๋ฐ,์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ๋ ์ค์ํ ๋ด์ฉ๋ค์ ๋ณด๋ด๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๋ฐฉ์!(๋ก๊ทธ์ธ๊ณผ ๊ฐ์ ๊ฒ๋ค! ์ค์์ ๋ณด๋ค)
โซ URL์ ๋ณ์(๋ฐ์ดํฐ)๋ฅผ ๋ ธ์ถํ์ง ์๊ณ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ HTTP Body์ ํฌํจํ์ฌ ์ ์ก
โซ ํค๋ํ๋ ์ค Body์ ๋ฐ์ดํฐ๋ฅผ ์ค๋ช ํ๋ Content-Type์ด๋ผ๋ ํค๋ํ๋๊ฐ ๋ค์ด๊ฐ๊ณ
์ด๋ค ๋ฐ์ดํฐ ํ์ ์ธ์ง ๋ช ์ํด์ฃผ์ด์ผ ํจ
โซ ์ ์กํ๋ ๊ธธ์ด ์ ํ์ด ์์.
โท Body์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๊ธธ์ด์ ์ ํ์ด ์์ง๋ง, ์ต๋ ์์ฒญ์ ๋ฐ๋ ์๊ฐ(Time Out)์ด ์กด์ฌํด์ ํ์ด์ง ์์ฒญ, ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ ์กด์ฌ
โซ ์บ์ฑํ ์ ์์.
โท URL์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ ๋์ง ์์ผ๋ฏ๋ก ์ฆ๊ฒจ์ฐพ๊ธฐ๋ ์บ์ฑ ๋ถ๊ฐ๋ฅ(์ค์์ ๋ณด๋ค์ด๊ธฐ ๋๋ฌธ!)
ํ์ง๋ง ์ฟผ๋ฆฌ์คํธ๋ง(๋ฌธ์์ด)๋ฐ์ดํฐ, ๋ผ๋์ค ๋ฒํผ, ํ ์คํธ ๋ฐ์ค์ ๊ฐ์ ๊ฐ์ฒด๋ค์ ๊ฐ๋ ์ ์ก ๊ฐ๋ฅ
๐ฉโ๐ป post๋ฐฉ์์ jsonํ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ๋ณด๋ธ๋ค (ex { "name1":"value1" "name2": "value2"... } โท MAP๊ณผ ๋น์ทํ ํํ)
: ์น์๋ฒ๋ก ๋ถํฐ ์ค๋ ๋์ ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ (๋์ ์๋น์ค ์๋ฒ์ด์ง๋ง ์ ์ ์๋น์ค๋ ํจ๊ป ์ฒ๋ฆฌํ ์ ์์ == ์ํ์นํฐ์บฃ) (==> Tomcat ์๋น์ค)
์ํ์น ํฐ์บฃ ์ฌ์ฉ ์ ๋ค์ด๋ก๋ ๋ฐฉ๋ฒ!
[[ http://tomcat.apache.org/ ]]
Java๋ก ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด JSP(Java Server Page)๋ ์๋ธ๋ฆฟ (Servlet)์ ์ฌ์ฉํด ์๋ฒ์ ํต์ ํ๊ธฐ ์ํด์๋ ์๋ฒ๊ฐ ๊ตฌ์ถ์ด ๋์ด ์์ดํ๋๋ฐ ์ด๋, ์ฌ์ฉํ๋ ์๋ฒ๊ฐ ์ํ์น ํฐ์บฃ์ด๋ค.
๐ช์ฆ! Tomcat์ด ์ฒ๋ฆฌํ ์ ์๋ ์ ์ ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ์ํด์ ์ํ์น์ ์ผ๋ถ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ ํจ๊ป ์ ๊ณตํ๋ ์๋ฒ๋ฅผ ๋งํ๋ค.
โTomcat
: ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ๋ํ์ ์ธ ์๋น์ค๋ก ์๋ธ๋ฆฟ์ด ์๋ํ๋ ํ๊ฒฝ์ ์ ๊ณตํด์ฃผ๋ ์๋น์ค๋ก ๋์ ์ธ ์๋น์ค๋ฅผ ์ฒ๋ฆฌํด์ค๋ค. (== WAS, ์๋ธ๋ฆฟ ์ปจํ ์ด๋)
โWAS
: ์น์๋ฒ๋ก๋ถํฐ ์ค๋ ๋์ ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ๋ก ์ปจํ ์ด๋์ ์น์๋ฒ๋ฅผ ๋ชจ๋ ํฌํจํ๊ณ ์๋ค.
WAS๋ ์ด์ฉ์ ๋์ , ์ ์ ์๋น์ค ๋ชจ๋!! ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.