-
[1] ์น ์๋ฒ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ดํด
์น
- HTTP ๊ธฐ๋ฐ์ผ๋ก ํต์ . ๋ชจ๋ ๊ฒ์ด HTTP!
- ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋, ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์๋ตํ ๋, ์๋ฒ๊ฐ ๋ฐ์ดํฐ ํต์ ๋ฑ ๋ชจ๋ HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ๋์
์น ์๋ฒ (Web Server)
- HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์ ์ ๋ฆฌ์์ค ์ ๊ณต(html,css,js,์ด๋ฏธ์ง,๊ฐ์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฅ ๋์ ธ์ค), ๊ธฐํ ๋ถ๊ฐ๊ธฐ๋ฅ
- ์ ์ (ํ์ผ) HTML, JSON, XML,CSS, JS, ์ด๋ฏธ์ง, ์์.. ์ ๋ถ HTTP ๊ธฐ๋ฐ์ผ๋ก ์ฃผ๊ณ ๋ฐ์ (์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋์๋)
- ์) NGINX, APACHE
์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ (WAS)
- HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์น ์๋ฒ ๊ธฐ๋ฅ ํฌํจ+ (์ ์ ๋ฆฌ์์ค ์ ๊ณต ๊ฐ๋ฅ)
- ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์คํํด์ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง ์ํ ๊ฐ๋ฅ (์ ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ์น ์๋ฒ์์ ์ฐจ์ด์ )
- ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ๋ค๋ฅธ ํ๋ฉด ๋ณด์ฌ์ค ์ ์์ (ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅ)
- ๋์ HTML ์์ฑ, REST API=HTTP API(JSON) ์ ๊ณต
- ์๋ธ๋ฆฟ, JSP, ์คํ๋ง MVC์ด ๋์
- ์) ํฐ์บฃ(Tomcat) Jetty, Undertow
์น ์๋ฒ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ์ฐจ์ด
- ์น ์๋ฒ๋ ์ ์ ๋ฆฌ์์ค(ํ์ผ), WAS๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๊น์ง ์คํ ๊ฐ๋ฅ
- ์ฌ์ค์ ๋์ ์ฉ์ด๋ ๊ฒฝ๊ณ๋ ๋ชจํธํจ
- ์น ์๋ฒ๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ธฐ๋ฅ์ ํฌํจํ๊ธฐ๋ ํจ
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ์น ์๋ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํจ
- ์๋ฐ๋ ์๋ธ๋ฆฟ ์ปจํ
์ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉด WAS๋ผ๊ณ ๋ถ๋ฆ
- ์์ฆ์ ์๋ธ๋ฆฟ ์์ด ์๋ฐ์ฝ๋๋ฅผ ์คํํ๋ ์๋ฒ ํ๋ ์์ํฌ๋ ์์
- ์ ๋ฆฌํ๋ฉด, WAS๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์คํํ๋๋ฐ ๋ ํนํ
- ์ค๋ฌด์์ ๋๋ ์ง๋ ์ฉ๋๋ฅผ ๋ณด์.
์น ์์คํ ๊ตฌ์ฑ - WAS, DB
- WAS, DB ๋ง์ผ๋ก ์ต์ํ์ ์์คํ ๊ตฌ์ฑ ๊ฐ๋ฅ
- WAS๋ ์ ์ ๋ฆฌ์์ค, ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ๋ชจ๋ ์ ๊ณต ๊ฐ๋ฅ
- WAS ํ๋๋ง ๊ฐ์ง๊ณ ์ด์์ ⇒ WAS๊ฐ ๋๋ฌด ๋ง์ ์ญํ ์ ๋ด๋น, ์๋ฒ ๊ณผ๋ถํ ์ฐ๋ ค
- ๊ฐ์ฅ ๋น์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ด ์ ์ ๋ฆฌ์์ค ๋๋ฌธ์ ์ํ์ด ์ด๋ ค์ธ ์ ์์
- (์ ์ ๋ฆฌ์์ค์ ๋นํด ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์ณ ๋ด๋ ค์ฃผ์ด์ผ ํ๋ค๋ ์๋ฏธ)
- WAS ์ฅ์ ์ ์ ๊ทผ์กฐ์ฐจ ๋ถ๊ฐ. ์ค๋ฅ ํ๋ฉด์กฐ์ฐจ๋ ๋ ธ์ถ ๋ถ๊ฐ๋ฅ
- ํฐ ์์คํ ์ ๊ตฌ์ถํ๊ธฐ์๋ ๋ถ๋ด์ด ์์
- ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ์
- ์น ์๋ฒ๋ฅผ ์์ ๋๊ณ ์ ์ ๋ฆฌ์์ค(html,css..)๋ ์น ์๋ฒ๊ฐ ์ฒ๋ฆฌ
- ์ ๋ฌด ๋ถ๋ดํ์ฌ ๋ถ๋ด ์ค์ด๊ธฐ
- ์น ์๋ฒ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๊ฐ์ ๋์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด WAS์ ์์ฒญ์ ์์
- ์ฅ์ ) WAS๋ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์ฒ๋ฆฌ ์
- ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ
- ์ ์ ๋ฆฌ์์ค๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ฉด Web ์๋ฒ ์ฆ์ค
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฆฌ์์ค๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ฉด WAS ์ฆ์ค
- ์ ์ ๋ฆฌ์์ค๋ง ์ ๊ณตํ๋ ์น ์๋ฒ๋ ์ ์ฃฝ์ง ์์ (๋ณต์กํ ๊ณผ์ ์ด ๊ฑฐ์ ์์)
- ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ด ๋์ํ๋ WAS ์๋ฒ๋ ์ ์ฃฝ์
- WAS, DB ์ฅ์ ์์๋ WEB ์๋ฒ๊ฐ ์ค๋ฅ ํ๋ฉด ์ ๊ณต ๊ฐ๋ฅ
- CDN ๊ฐ์ ์ ์ ๋ฆฌ์์ค๋ฅผ ์บ์ํ ์ ์๋ ์ค๊ฐ ์๋ฒ๋ฅผ ๋๊ธฐ๋ ํ๊ณ .. ์ด ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ณธ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์
- ํ๋ฉด ์ ๊ณต์ด ์๋ API๋ก ๋ฐ์ดํฐ๋ง ์ ๊ณตํ๊ฒ ๋๋ฉด ์น ์๋ฒ๊ฐ ๊ตณ์ด ์์ด๋ ๋จ. WAS ์๋ฒ๋ง ๊ตฌ์ถํด๋ ๋จ.
[2] ์๋ธ๋ฆฟ
HTML Form ๋ฐ์ดํฐ ์ ์ก
POST ์ ์ก - ์ ์ฅ
- ํ์๊ฐ์ form
- html์ POST๋ก ์ ์ฅํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ๊ฐ POST๋ก ์๋ฒ์ ์ ์ก ⇒ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญ HTTP ๋ฉ์ธ์ง๋ฅผ ์์ฑ
- ๋ฐ์ดํฐ, ์ปจํ ์ธ ํ์ (๋ด์ฉ) ๋ฑ์ ์ ๋ณด๊ฐ ์์
์๋ฒ์์ ์ฒ๋ฆฌํด์ผ ํ๋ ์ ๋ฌด
์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ ์ง์ ๊ตฌํ
๋ง์ฝ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS)๋ฅผ ์ง์ ๊ตฌํํด์ผ ํ๋ฉด, ๋ค์ ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น๋๋ก ์ฝ๋๋ฅผ ์ง์ ์์ฑํด์ผ ํจ
- ๋จผ์ ์๋ฒ์ TCP/IP ์ฐ๊ฒฐ์ ๋๊ธฐํ๊ณ , ์ธํฐ๋ท ๋ง์์ ์ฐ๊ฒฐ์ด ๋ค์ด์ค๋ฉด ์์ผ์ ์ฐ๊ฒฐํ๋๋ก ํจ
- HTTP ์์ฒญ ๋ฉ์์ง๋ ๋จ์ ํ ์คํธ์ด๊ธฐ ๋๋ฌธ์, ํ์ฑ์ ์ํํด POST ๋ฐฉ์๊ณผ /save URL์ ์ธ์
- Content-Type์ ํ์ธํ๊ณ , ์ด์ ๋ฐ๋ผ ๋ฉ์์ง body์ ๋ด์ฉ๋ ํ์ฑํด์ ์ฝ์
- ์ ์ฅ์ ๋ํ ๋น์ฆ๋์ค ๋ก์ง์ ์คํํ๊ณ , DB์ ์ ์ฅ ์์ฒญ์ ์ํ
- ์๋ฏธ์๋ ๋น์ฆ๋์ค ๋ก์ง
- ์ ์ฅ ๊ฒฐ๊ณผ๋ฅผ ์น ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌํ๊ธฐ ์ํด HTTP ์๋ต ๋ฉ์์ง๋ฅผ ์ง์ ์์ฑ
- ์์ ๋ผ์ธ ์์ฑ, ํค๋ ์์ฑ, ๋ฉ์์ง body์ HTML ์์ฑ
- TCP/IP๋ก HTTP ์๋ต ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๊ณ ์์ผ ์ข ๋ฃ
(4)๋ง ์๋ฏธ์๋ ๋น์ฆ๋์ค ๋ก์ง์ธ๋ฐ ์ ํ๋ก ๋จ๊ณ๊ฐ ๋๋ฌด ๋ง์
- ์ ์ธ๊ณ ๊ฐ๋ฐ์๊ฐ ์ด ํ๋ก์ธ์ค๋ฅผ ๋๊ฐ์ด ๊ฐ๋ฐํ๋ ๊ฒ์ ๋๋ฌด ๋นํจ์จ์
→ ์๋ธ๋ฆฟ์ ๋ฑ์ฅ
์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS ์ฌ์ฉ
- ์๋ธ๋ฆฟ์ ์๋ฏธ์๋ ๋น์ฆ๋์ค ๋ก์ง(์ด๋ก ์์)๋ฅผ ์ ์ธํ ๋ชจ๋ ์ผ๋ค์ ์ง์ํด์ค๋ค! ๋ค ์๋ํ
์๋ธ๋ฆฟ
ํน์ง
@WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response){ //์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง } }
- ์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ด ์์ ๋ urlPatterns(/hello)์ URL์ด ํธ์ถ๋๋ฉด ์๋ธ๋ฆฟ ์ฝ๋๊ฐ ์คํ
- HttpServelet์ ์์ํด์ ์ฌ์ฉ
- HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ HttpServletRequest๋ฅผ ์ฌ์ฉ ⇒ HTTP ๋ฉ์ธ์ง์ ๊ฐ์ ์ป์ด๋ผ ์ ์์.
- HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ ๊ณตํ ์ ์๋ HttpServletResponse ⇒ HTTP ์๋ต ๋ฉ์ธ์ง๋ฅผ ์์ฑํ๋ ๋ฑ์ ํธ์ ๊ธฐ๋ฅ ์ ๊ณต.
- ๊ฐ๋ฐ์๋ HTTP ์คํ์ ๋งค์ฐ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ ⇒ ๊ธฐ๋ณธ์ ์ธ HTTP ์คํ์ ์ด๋ ์ ๋๋ ์์์ผ ํจ..!
- Req, Res๋ฅผ ์ง์ ํ์ฑํ๋ คํ๋ค๋ฉด ์ด๋ ค์ ์ ๊ฒ
HTTP ์์ฒญ, ์๋ต ํ๋ฆ
- HTTP ์์ฒญ์
- WAS๋ Request, Response ๊ฐ์ฒด๋ฅผ ์๋ก ๋ง๋ค์ด์ ์๋ธ๋ฆฟ ๊ฐ์ฒด ํธ์ถ
- ๊ฐ๋ฐ์๋ Request ๊ฐ์ฒด์์ HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ๊บผ๋ด์ ์ฌ์ฉ
- ๊ฐ๋ฐ์๋ Response ๊ฐ์ฒด์ HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ ๋ ฅ
- WAS๋ Response ๊ฐ์ฒด์ ๋ด๊ฒจ์๋ ๋ด์ฉ์ผ๋ก HTTP ์๋ต ์ ๋ณด๋ฅผ ์์ฑ→ ์น ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ
์๋ธ๋ฆฟ ์ปจํ ์ด๋
- ํฐ์บฃ์ฒ๋ผ ์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS๋ฅผ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๊ณ ํจ
- ๊ฐ๋ฐ์๊ฐ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ฅผ ์ง์ ์์ฑํ์ง ์์๋ ์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS๋ฅผ ์ฌ์ฉ์
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์์ฑ, ์ด๊ธฐํ, ํธ์ถ, ์ข ๋ฃํ๋ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌ
- ๊ฐ์ฒด๋ฅผ ํ๋๋ง ์์ฑํด์ ๋ชจ๋๊ฐ ๊ณต์ ํด์ ์ฌ์ฉํ๋ ๋ฐฉ์
- ์? Request-Response๋ ์์ฒญ๋ง๋ค ํญ์ ์๋กญ๊ฒ ์์ฑํด์ผํจ
- ๊ทธ๋ฌ๋, ๊ณ ๊ฐ์ ์์ฒญ์ด ์ฌ ๋ ๋ง๋ค ๊ณ์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋นํจ์จ
- ์ต์ด ๋ก๋ฉ ์์ ์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ์ฌํ์ฉ
- ๋ชจ๋ ๊ณ ๊ฐ ์์ฒญ์ ๋์ผํ ์๋ธ๋ฆฟ ๊ฐ์ฒด ์ธ์คํด์ค์ ์ ๊ทผ
- ๊ณต์ ๋ณ์ ์ฌ์ฉ ์ฃผ์
- ์๋ชป ์ค์ ํ๋ฉด ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ด ์ ๋ณด๋ฅผ ๋ณด๊ฑฐ๋.. ํ ์ ์์
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ข ๋ฃ์ ํจ๊ป ์ข ๋ฃ
- JSP๋ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ ๋์ด์ ์ฌ์ฉ
- ๋์ ์์ฒญ์ ์ํ ๋ฉํฐ ์ฐ๋ ๋ ์ฒ๋ฆฌ ์ง์
์ด ํฌ์คํธ๋ ์ธํ๋ฐ์ ๊น์ํ ๊ฐ์ฌ๋์ ์คํ๋ง mvc ๊ฐ์ข๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
'๐ญ Study > : Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ