ํด๋ผ์ด์ธํธ(eg.์น ๋ธ๋ผ์ฐ์ )๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ ์น ํ์ด์ง(HTML ๋ฌธ์)๋ฅผ ๋ฐํํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ
๋ํ์ ์ผ๋กNginx, Appach HTTP Server, IIS
๊ฐ ์๋ค.
- ํด๋ผ์ด์ธํธ์ HTTP ํต์ ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ์๋ฒ
GET
๊ณผ ๊ฐ์ HTTP request๊ฐ ๋ค์ด์ค๋ฉด ์ด์ ๋์ํ๋ ์ ๋ณด๋ฅผ ๋ฐํ- eg. ์ฌ์ฉ์๊ฐ ํน์ ์นํ์ด์ง์ ์ ์ํ๋ฉด ์น์๋ฒ๊ฐ ํด๋น ์นํ์ด์ง์ HTML์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌ
- ์ด ๋ ์น์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ฌ๋ฌ connection์ ๋ง๋ค์ด ์ฌ๋ฌ ์ ๋ณด(HTML ํ
ํ๋ฆฟ, ์ด๋ฏธ์ง, ๊ธฐํ ๋ฐ์ดํฐ)๋ค์ ๋ณ๋ ฌ์ ์ผ๋ก ์ ์ก
POST
,PUT
๋ฑ๊ณผ ๊ฐ์ HTTP request๊ฐ ๋ค์ด์ค๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ด๋ค ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ฒ ๋๊ณ , ์น์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ปจํ ์ธ ๋ฅผ ์ ๋ฌ๋ฐ๋ ์ญํ ์ ํ๋ค.
๋ชจ๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋์ผํ ์นํ์ด์ง๋ฅผ ๋ณด์ฌ์ง๊ฒ ํ๋ ๊ฒ์ ์๋ฏธ
์ฌ์ฉ์์ ๋ฐ๋ผ ์นํ์ด์ง๊ฐ ๋ฌ๋ฆฌ ๊ตฌ์ฑ๋๋ ๊ฒ์ ์๋ฏธ
์น ์๋ฒ๊ฐ ์ฌ์ฉ์์ ์ ๋ณด์ ๋ฐ๋ผ HTML์ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ ์ฌ์ฉ์์ ๋ฐ๋ผ ํน์ ์ ๋ณด๋ฅผ DB์์ ๋ถ๋ฌ์ ๋ด๋ถ ๋ก์ง์ ํตํด ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํด์ HTML์ ๋ฃ์ด์ค์ผ ํ ๊ฒ์ด๋ค.
ํ์ง๋ง ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ฌ๋ฌ DB์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ง์๋ฅผ ํ๊ณ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํด์ ์ ๋ฌํด์ผ ํ๋ค.
์ฆ ์น ์๋ฒ ์์๋ ๋์ ๋ฐ์ดํฐ ์์ฑ์ ํ๊ธฐ ์ํ ๋ถ๋ถ
๊ณผ client ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ด์ ๋ํ ์๋ต์ ํ๋ ๋ถ๋ถ
์ด ๊ณต์กดํ๊ฒ ๋๊ณ , ์๋ฒ์ ๋ถํ๊ฐ ์ปค์ง๊ฒ ๋๋ค.
๋ฐ๋ผ์ ์น ์๋ฒ
์๋ client์ ์์ฒญ๊ณผ ์๋ต์ ๋ํด์๋ง ์ํํ๋ ๋ถ๋ถ(์ ์ ์ปจํ
์ธ ๋ถ๋ถ)๋ง ๋จ๊ธฐ๊ณ ,
๋ค๋ฅธ ๋์ ์ปจํ
์ธ ๋ฅผ ์ํ ์ง์์ ๊ตฌ์ฑ ๋ฑ์ WAS(Web Application Server)
๋ก ๋ถ๋ฆฌํ๊ฒ ๋ ๊ฒ์ด๋ค.
์น ์๋ฒ
- HTTP ํ๋กํ ์ฝ์ ํตํ
์ ์ ์ธ ์ฝํ ์ธ
์ ๊ณต ๋์ ์ธ ์์ฒญ
์ด ๋ค์ด์์ ๋, ํด๋น ์์ฒญ์ ์น ์๋ฒ์์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์์ปจํ ์ด๋(Container)๋ก ๋ณด๋ด์ฃผ๋ ์ญํ
์ปจํ
์ด๋(Container)
- ์ฌ์ฉ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์น ์๋ฒ๋ ์ ์ ์ธ ์์๋ง ํด๋ผ์ด์ธํธ ์ธก์ ๋ณด๋ผ ์ ์๊ณ , ๋์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ๋ถ๋ถ์ ์ฒ๋ฆฌํ ์ ์๋ค.
์ปจํ ์ด๋๋ ์ด๋ฐ ๋ถ๋ถ์ ๋์ ์ฒ๋ฆฌํด์ ์น ์๋ฒ์ ์ ์ ์ธ ํ์ผ๋ก ๋ง๋ค์ด์ ๋ณด๋ด์ฃผ๋ ์ํํธ์จ์ด ๋ชจ๋
eg. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ, ๋ก์ง ์ฒ๋ฆฌ ๋ฑ- ํด๋ผ์ด์ธํธ ์ธก์์ ์ด๋ ํ ์์ฒญ์ ๋ณด๋ด๋ฉด, ํด๋น ํ์ผ์์ ์ฒ๋ฆฌํด์ผํ ๋ถ๋ถ์ ์ฒ๋ฆฌํ๊ณ ์ ์ ํ์ผ๋ก ๋ง๋ ํ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋๋ค๊ณ ๋ณผ ์ ์๋ค.
- jsp, servlet์ ์คํ์ํฌ ์ ์๋ ์ํํธ์จ์ด
- ์๋ฐ ๊ณ์ด์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋(์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐฐํฌ๋๋ ๊ณต๊ฐ)๋ผ ๋ถ๋ฅธ๋ค.
WAS(Web Applciation Server)
์น ์๋ฒ๋ก๋ถํฐ ์ค๋ ๋์ ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ
๋ก ์ผ๋ฐ์ ์ธ ์น ์๋ฒ์ ๊ตฌ๋ณ๋๋ค.- ์น ์๋ฒ + ์น ์ปจํ ์ด๋
- ํ๋ก๊ทธ๋จ ์คํ ํ๊ฒฝ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ๋น์ง๋์ค ๋ก์ง ์ํ ๊ฐ๋ฅ
- ์น ์๋ฒ: Apache HTTP Server, nginx, IIS
- WAS(Application Server): Apache Tomcat, Jeus
ํ๋ก์ธ์ค
:
WAS๊ฐ ์น ์๋ฒ๋ก๋ถํฐ ์ฒ๋ฆฌ ์์ฒญ์ ๋ฐ์ผ๋ฉด, ํ๋ก๊ทธ๋จ์ ์คํ๊ฒฐ๊ณผ๋ฅผ ์น ์๋ฒ์ ์ ๋ฌ โก๏ธ ์น ์๋ฒ๋ ํด๋น ๊ฒฐ๊ณผ๋ฅผ ์น ํด๋ผ์ด์ธํธ์ ์ ์ก
Client - ์น ์๋ฒ - WAS ์ ๊ตฌ์กฐ
๊ณต์ฉ ๊ฒ์ดํธ์จ์ด ์ธํฐํ์ด์ค
์ ์ฝ์๋ก์น ์๋ฒ๋ค ๊ฐ์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ผ์ข ์ ๊ท์น
์น ์๋ฒ
๋ ์ข ๋ฅ๊ฐ ์ฌ๋ฌ๊ฐ์ง์ด๊ณ ,ํ๋ก๊ทธ๋จ
์ญ์ ๋ค์ํ๊ฒ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์๋ก ์ ์ถ๋ ฅ์ ์ฃผ๊ณ ๋ฐ์ ํ์ค์ด ํ์ํ๋ค.- WAS๋ CGI ๊ท๊ฒฉ์ ๋ง๊ฒ ์ค๊ณ๋ ์๋ฒ๋ผ๊ณ ์๊ฐํ ์ ์๋ค.
์ค์ CGI๋ฅผ ํตํด ๋์ ์ธ ์ฝํ ์ธ ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๊ฐ๋จํ๊ฒ ์ดํด๋ณด์
-
์๋ฒ์ cgi-bin์ด๋ผ๋ ํด๋๋ฅผ ๋ง๋ค์ด๋๊ณ , ๊ทธ ๋ด๋ถ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋ค์ด๋๋๋ค.
-
์น ์๋ฒ๊ฐ CGI๋ฅผ ํตํด cgi bin์ ์ ์ํด์ ๊ทธ ๋ด๋ถ์ ํ์ผ์ ์คํ์ํค๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ณด๋ธ๋ค.
-
CGI๋ฅผ ๊ตฌ๋ํ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ Apache HTTPd
์๋์์ด๋ ์น ์๋ฒ์ฉ ์ํํธ์จ์ด. ์ด๋ฅผ ํตํด ์น์ ๊ตฌ์ถํ๋ ค ํ ๋ ์ฝ๊ฒ ์น ์๋ฒ๋ฅผ ์ํํ ์ ์๊ฒ ๋๋ค.
์ํ์น๋ฅผ ๋ง๋ ์ํ์น ์ํํธ์จ์ด ์ฌ๋จ์์ ๋ง๋ WAS ์ด๋ค.
CGI ๊ท๊ฒฉ์ ๋ง์ถ ์ ์๋ ์ธ์ด๋ PHP, Perl, Python ๋ฑ์ด ์๊ณ Java๋ CGI ๊ท๊ฒฉ์ ๋ฐ๋ก ๋ง์ถ ์ ์๋ค
.
๊ทธ๋ฌ๋ ๋ง์ ์๋ฒ๋ค์ด Java๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , Java ๋ํ ์ด๋ฌํ CGI ๊ท๊ฒฉ์ ๋ง์ถ๊ธฐ ์ํ ๊ธฐ์ ์ ๊ฐ์ง๊ณ ์๋๋ฐ ์ด๊ฐ ๋ฐ๋ก ์๋ธ๋ฆฟ
์ด๋ค.
-
์๋ธ๋ฆฟ ์ปจํ ์ด๋(Servlet Container)๋ ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํด์ฃผ๋ ์ปจํ ์ด๋
-
์ฌ์ฉ์๊ฐ URL์ ์ ๋ ฅํ๋ฉด HTTP request๊ฐ Servlet Container๋ก ์ ์กํ๋ค.
-
์์ฒญ์ ์ ์ก๋ฐ์ Servlet Container๋ HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
-
web.xml์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๊ฐ ์์ฒญํ URL์ด ์ด๋ ์๋ธ๋ฆฟ์ ๋ํ ์์ฒญ์ธ์ง ์ฐพ๋๋ค.
-
ํด๋น ์๋ธ๋ฆฟ์์ service ๋ฉ์๋๋ฅผ ํธ์ถํ ํ ํด๋ผ์ด์ธํธ์ GET, POST ์ฌ๋ถ์ ๋ฐ๋ผ doGet() ๋๋ doPost()๋ฅผ ํธ์ถํ๋ค.
-
doGet() or doPost() ๋ฉ์๋๋ ๋์ ํ์ด์ง๋ฅผ ์์ฑํ ํ HttpServletResponse ๊ฐ์ฒด์ ์๋ต์ ๋ณด๋ธ๋ค.
-
์๋ต์ด ๋๋๋ฉด HttpServletRequest, HttpServletResponse ๋ ๊ฐ์ฒด๋ฅผ ์๋ฉธ์ํจ๋ค.
์๋ธ๋ฆฟ์ ํด๋ผ์ด์ธํธ๊ฐ ๋์ ์ปจํ
์ธ ๋ฅผ ์์ฑํ ๋๋ง๋ค ์๊ธฐ๊ฒ ๋๋ค.
์ฆ ํด๋ผ์ด์ธํธ๊ฐ ๋ง์์ง์๋ก ์๋ง์ ์๋ธ๋ฆฟ์ ๋ง๋๋ ๊ฒ์ ์ด๋ ต๊ธฐ ๋๋ฌธ์, ์ด๋ฌํ ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํด์ฃผ๋ ๋ถ๋ถ์ ์๋ธ๋ฆฟ ์ปจํ
์ด๋
๋ผ๊ณ ํ๋ค.
- ์๋ธ๋ฆฟ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌ
- ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ์๋ธ๋ฆฟ์ ์์ฑํ๊ณ ์ด์ ๋์ํ๋ ์๋ธ๋ฆฟ ๋ฉ์๋๋ฅผ ํธ์ถ
- HTTP ํต์ ์ง์
- ๋ฉํฐ ์ค๋ ๋ฉ ์ง์
- ์๋ธ๋ฆฟ์ ์์ฒญ์ ๋ฐ๋ผ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ด ๊ด๋ฆฌ๋ฅผ ํ๋ค๋ฉด ์์ฒญ๋ง๋ค ๋ค์์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๊ณ ์ด์ ๋ฐ๋ผ ์๋ฒ์ ๋ก๋๊ฐ ์ปค์ง ์ ๋ฐ์ ์๋ค. ๋ฐ๋ผ์ ์๋ธ๋ฆฟ์ ๋ง์ ์๋ธ๋ฆฟ ๋ฉ์๋์ ๋ํด ๋ฉํฐ ์ค๋ ๋๋ก ๊ด๋ฆฌํ๊ฒ ๋๋ค.
[ref]
https://me-analyzingdata.tistory.com/entry/%EC%9B%B9-%EC%84%9C%EB%B2%84%EC%99%80-WAS
https://velog.io/@seanlion/cgi
https://melonicedlatte.com/web/2019/06/23/210300.html
https://www.youtube.com/watch?v=NyhbNtOq0Bc