4. CGI์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก
๋ฆฌ๋ค์ด๋ ํธ์ ๊ตฌ์กฐ
์ํ์ฝ๋ 302์ผ ๊ฒฝ์ฐ Location
ํค๋์ ํ์๋ URL์ ๋ค์ ์์ฒญ์ ๋ฐํํ๋ค.
์ด์ฒ๋ผ ์ฒ์ ์์ฒญํ URL๊ณผ ๋ค๋ฅธ URL๋ก ์ ๋ํ๋ ๊ฒ์ ๋ฆฌ๋ค์ด๋ ํธ๋ผ๊ณ ํ๋ค.
์ํ ์ ์ง ํ๋กํ ์ฝ๊ณผ ๋ฌด์ํ ํ๋กํ ์ฝ์ ์ฐจ์ด
FTP๋ ์๋ฒ๊ฐ ์์ ์์ฒญ์ ๊ธฐ์ตํ๋ ์ํ ์ ์ง ํ๋กํ ์ฝ์ด๋ค.
์ํ ์ ์ง ํ๋กํ ์ฝ์ ํต์ ์ ์ฐจ๊ฐ ๋ง์ ์ค๋ฒํค๋๊ฐ ํฌ๋ค.
HTTP๋ ์ํ๋ฅผ ๊ฐ์ง ์๋ ๋ฌด์ํ ํ๋กํ ์ฝ์ด๋ค.
์ํ๋ฅผ ์ ์งํ์ง ์์ ๊ฒฝ์ฐ ์ค๋ฒํค๋๊ฐ ์ ์ง๋ง ์ํ๋ฅผ ์ ์งํ์ง ์์ผ๋, ๋ก๊ทธ์ธ ๊ฐ์ ์ธ์ฆ์ ๋ํ ์ํ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์ด๋ ค์ ๋ค.
์ฟ ํค์ ๊ฐ๋ ๊ณผ ๊ตฌํ ๋ฐฉ๋ฒ
์ฟ ํค๋ ๋ฌด์ํ ํ๋กํ ์ฝ์ HTTP์ ๊ท๊ฒฉ์ ํ์ฅํด ์น ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์น ๋ธ๋ผ์ฐ์ ์ฌ์ด์์ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๊ฒํ๋ค.
์์ฒญ์ ํ ๋ ์น ๋ธ๋ผ์ฐ์ ์ ์ํ๋ฅผ Cookie
๋ผ๋ ํค๋์ ์ค์ด ๋ณด๋ธ๋ค.
์ฟ ํค์ ๋ฌธ์ ์
์์ฒญ ํค๋, ์๋ต ํค๋์ ์ฟ ํค๋ฅผ ์ค์ ํ๊ธฐ ๋๋ฌธ์ ๋ณด์์์ ์ํ์ด ์๋ค.
์ธ์ ์ ๊ฐ๋ ๊ณผ ๊ตฌํ ๋ฐฉ๋ฒ
์ธ์
์ด๋ ์ผ๋ จ์ ์ฒ๋ฆฌ ํ๋ฆ์ ๋งํ๋ค.
์ด ์ฒ๋ฆฌ ํ๋ฆ์ด ํ ๋ฒ์ ์๋ฃ ๋์ง ์๋๋ค๋ฉด ์ธ์
์ ์ํ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.
์ด๋ฌํ ์ธ์
์ ์ํ๋ ์น ์๋ฒ์์ ๊ด๋ฆฌํ๊ณ ์ธ์
ID๋ง์ ์ฃผ๊ณ ๋ฐ๋๋ค.
์ธ์
ID๋ ๋จ์ํ ์ซ์(๋๋ ๋ฌธ์์ด) ์ด๋ฏ๋ก ์ฟ ํค๋ฅผ ์ด์ฉํด ๊ด๋ฆฌํ๋ค.
๋ก๊ทธ์ธ๊ณผ ๊ฐ์ ์ธ์
์ ๊ฐ์ํ ๋ ์น ์๋ฒ๊ฐ ์๋ก์ด ์ธ์
ID๋ฅผ ๋ฐํํ๊ณ , ์ฟ ํค์ ์ ์ฅ๋์ด ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ๋๋ค.
์ดํ ์์ฒญ๋ถํฐ๋ ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค๋ฅผ ์๋ฒ์ ๋ณด๋ด ์ธ์ฆ์ ์ฑ๊ณตํ๋ค.
์ฟ ํค์ ์ธ์ ID๋ง ์ ์ฅํจ์ผ๋ก์จ ์ฟ ํค์ ์ ์ฅํ ์ ์๋ ์ ๋ณด๋์ ์ ํ์ ๋ฌด์ํ ์ ์๊ณ , ์์ ์ฑ์ ๋์ธ๋ค.
5. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ ์์
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ HTTP๋ฅผ ํตํด ํต์ ํจ์ ๋ฐ๋ผ ๊ตฌํ๋๋ค.
โ ํ๋ก๊ทธ๋จ VS ์ ํ๋ฆฌ์ผ์ด์ VS ์๋ฒ VS ํ๋ก์ธ์ค
ํ๋ก๊ทธ๋จ
์ปดํจํฐ๊ฐ ์คํํ๋ ์ฒ๋ฆฌ์ ์์๋ฅผ ์ง์ํ ๊ฒ.
์์ค์ฝ๋ ์์ฒด๋ฅผ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ํ ๋๋ ๋ง๋ค.
์ ํ๋ฆฌ์ผ์ด์
์๋ํ๋ก์ธ์, ํ ๊ณ์ฐ ๋ฑ ์ปดํจํฐ ์์์ ์๋ํ๋ฉฐ, ์ฌ์ฉ์์๊ฒ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํ ๊ฒ.
์น ์ ํ๋ฆฌ์ผ์ด์
๋ํ ์น์ ์ด์ฉํด ํน์ ๋ชฉ์ ์ ๋ฌ์ฑํ๊ธฐ ์ํ ์ํํธ์จ์ด
์๋ฒ
ํน์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ ํนํ๋ ์ํํธ์จ์ด.
๋จ๋
์ผ๋ก ์์คํ
์ ๊ตฌ์ฑํ์ง๋ ๋ชปํ๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ๋น๋กฏํ ๋ค๋ฅธ ์ํํธ์จ์ด์ ์กฐํฉํ์ฌ ์ฌ์ฉํ์ฌ์ผ ํ๋ค.
์๋ฒ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ํด๋ผ์ด์ธํธ์ด๋ค.
ํ๋ก์ธ์ค
์ปดํจํฐ ์์์ ์๋ํ๊ณ ์๋ ์ํํธ์จ์ด
์น ์๋ฒ
์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
์๋ธ๋ฆฟ์ด๋ JSP๋ ์ด๋์์ ์๋ํ๋๊ฐ?
์๋ฐ ํ๋ก๊ทธ๋จ์ ์ปดํจํฐ๊ฐ ์ง์ ์คํํ๋ ๊ฒ์ด ์๋๋ผ JVM์ด๋ผ๋ ๊ฐ์์ ์ปดํจํฐ๊ฐ ์คํํ๋ค.
๋๋ฌธ์ JVM๋ ์ปดํจํฐ๊ฐ ๋ณผ ๋๋ ํ๋์ ํ๋ก์ธ์ค๋ก, ์น ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋
๋ฆฝ๋ ํ๋ก์ธ์ค๋ก ๋์ํ๋ค.
JVM์์๋ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ผ๋ ์ํํธ์จ์ด๊ฐ ์๋๋๊ณ , ์ด ์๋ฒ๊ฐ ์๋ธ๋ฆฟ์ด๋ JSP๋ฅผ ์๋์ํจ๋ค.
CGI๋ ์น ์๋ฒ๋ก ์์ฒญ์ด ์ฌ ๋๋ง๋ค ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๊ธฐ๋๋์๋ค๊ฐ ์ข
๋ฃ๋๋ 1ํ์ฉ ๋ชจ๋ธ์ด์ง๋ง,
์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ ํญ์ ํ๋ก์ธ์ค๊ฐ ์์ฃผํด ์๊ณ ์น ์๋ฒ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ ์๋ธ๋ฆฟ์ด๋ JSP๋ฅผ ์คํํ๋ ์ฌ์ฌ์ฉ ๋ชจ๋ธ์ด๋ค.
์น ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ์ฐ๋
ํฐ์บฃ
์ํ์น์์ ๊ฐ๋ฐํ ์คํ ์์ค ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ.
์น ์๋ฒ์ ์ฐ๋ํ๊ธฐ ์ํด ํฐ์บฃ์ ์ํ์น์ฉ์ผ๋ก mode_jk๋ผ๋ ์ฐ๋ ๋ชจ๋์ ์ ๊ณตํ๋ฉฐ, ์ํ์น ํ์ฅ ๊ธฐ๋ฅ์ผ๋ก ํ์ฌํด ์ฐ๋์ ๊ตฌํํ๋ค.
์ํ์น์ ๋์ฐฉํ HTTP ์์ฒญ์ mod_jk๊ฐ ํฐ์บฃ์ผ๋ก ์ ์กํ๊ณ , ํฐ์บฃ์ด ์ด ๊ธฐ๋ฐ์์ ์๋ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๋ฌํ๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์
์ด ์ฒ๋ฆฌ๋ฅผ ์คํํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋๋๋ ค์ค๋ค.
์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ mod_jk์ ๊ฒฐ๊ณผ๋ฅผ ๋๋๋ ค์ฃผ๊ณ ์ํ์น๊ฐ ์น ๋ธ๋ผ์ฐ์ ๋ก HTTP ์๋ต์ ๋๋๋ ค์ค๋ค.
๋ํ ์ฌ๋ฌ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ๋ค๋ฅธ ๋ ธ๋์ ๋ฐฐ์นํด ๋ถ๋ด์ํฌ ์๋ ์๋ค.
์น ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋ถ๋ด
- ์น ์๋ฒ : ์ ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ : ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
์ด์ ๊ฐ์ด ์๋ฒ ์ฌ์ด๋์์ ํ๋ก์ธ์ค ๋๊ฐ๊ฐ ์ฐ๋ํ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ํ์ด์ง์ ๋ฐ๋ผ ์๊ตฌ๋ฅผ ๋ณด๋ผ ํ๋ก์ธ์ค๊ฐ ์ ๊ฐ๊ฐ์ด๋ฉด ๊ณจ์น์ํ๋, ํด๋ผ์ด์ธํธ์ HTTP ์์ฒญ์ ์น ์๋ฒ๊ฐ ์ ๋ถ ๋ฐ๊ณ ,
์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๊ฐ์ฒ๋ฆฌํด์ผ ํ ์์ฒญ๋ง ์น ์๋ฒ๊ฐ ์ ๋ฌํ๋ค.
์ด ๋ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ
์ฒ๋ฆฌ๋ ๊ฐ๋ฒผ์ด ๋์ ํ์๊ฐ ๋ง์ ์ ์ ์ฝํ
์ธ ์ ๋ํ ์์ฒญ์ ์น ์๋ฒ,
ํ์๋ ์ ์ง๋ง ์ฒ๋ฆฌ๋์ด ๋ฌด๊ฑฐ์ด ๋์ ์ปจํ
์ธ ์์ฒญ์ ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ๋ถ๋ดํ๋ค.
์ฌ์ค ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ์น ์๋ฒ ๊ธฐ๋ฅ๋ ๊ฐ์ง๊ณ ์๋ค.
๋ฐ์ดํฐ ๋ฒ ์ด์ค ์๋ฒ
๋๋์ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๊ณ ๋น ๋ฅด๊ฒ ๊ฒ์, ์ง๊ณํ ์ ์๋ ์ํํธ์จ์ด (Database Management System)
SQL
Structured Query Language (๊ตฌ์กฐ์ ์ง์ ์ธ์ด).
๋ฌด์์(SELECT), ์ด๋์์(WHERE), ์ด๋ป๊ฒ(GROUP BY ๋ฑ) ์ถ์ถํ ๊ฒ์ธ์ง ํํํ๋ ์์
์ ํนํ๋์ด ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํด๋ผ์ด์ธํธ์ ๊ด๊ณ
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋
๋ฆฝ์ ์ผ๋ก ์๋ํ๋ ํ๋ก์ธ์ค์ด๊ณ , ์ฟผ๋ฆฌ๋ฅผ ํตํด ๊ฒฐ๊ณผ๋ฅผ ์ทจ๋ํ๋ ์ชฝ๋ ํ๋ก์ธ์ค์ด๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์
์์๋ ์น ์ ํ๋ฆฌ์ผ์ด์
ํ๋ก๊ทธ๋จ์ด SQL์ ๋ฐํํ๋ค.
๋ง์ฝ ๊ณ ๊ฐ์ด ์ํ์ ๋ฆฌ์คํธ๋ฅผ ์กฐํํ๊ณ ์ถ์ ๋ ์ํ ๋ชฉ๋ก์ HTML์ ๋งค๋ฒ ์ง์ ๊ธฐ์ ํ๋ ๊ฒ์ด ์๋,
์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ๋ชฉ๋ก์ ์กฐํํด์จ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ๋ถ๋ฆฌ
DBMS๋ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์์ ๋์์ ์ด์ฉ๋๊ธฐ ๋๋ฌธ์ ๋จ๋
ํ๋ก์ธ์ค๋ก ์๋ํ๋ค.
์ฆ ์น ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก์ ์๋ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ ์น ์๋ฒ๋ฅผ ์๋์ํฌ ์ปดํจํฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋์ํฌ ์ปดํจํฐ๋ฅผ ๋ฐ๋ก ์ค๋นํด ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ ์ปดํจํฐ์์ ์คํํ๋ค.
์ด ๊ฒฝ์ฐ, ์ฒ๋ฆฌ๊ฐ ๋ถ์ฐ๋์ด ๋ถํ๊ฐ ์ค์ด๋ค๋ฉฐ ์๋ก์ด ์์คํ
์ด ๊ตฌ์ถ๋๋๋ผ๋ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ DB ์๋ฒ๋ฅผ ์ด์ฉํ๊ธฐ ํธ๋ฆฌํด์ง๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ํต์
์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ๊ฐ HTTP๋ฅผ ์ฌ์ฉํด ํต์ ํ๋ฏ์ด,
์น ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํต์ ํ ๊ฒฝ์ฐ์๋ ๊ณ ์ ์ ํต์ ํ๋กํ ์ฝ์ ์ฌ์ฉํด ํต์ ํ๋ค.
6. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ
์๋ธ๋ฆฟ/JSP๋ง์ผ๋ก๋ ๋ถ์กฑํ๊ฐ?
์น ์ ํ๋ฆฌ์ผ์ด์ ๋๋ถ๋ถ์์ ์๋ฐ๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์ญ์ฌ ๊น์ ์ธ์ด
- ๊ฐ์ฒด์งํฅ, ์ฌ์ฌ์ฉ์
- ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์๊ณผ ์ง์ด ์ถฉ์ค
- ์๋ง์ ๊ฐ๋ฐ ์ง์ ๋๊ตฌ๊ฐ ์คํ์์ค๋ก ์ ๊ณต
์๋ธ๋ฆฟ๊ณผ JSP์ ์ฐ๋
์๋ธ๋ฆฟ์ HTTP ์์ฒญ์ ๋ฐ์ ๋ธ๋ผ์ฐ์ ์ ๋๋๋ ค์ค HTML์ ์๋ฐ ํ๋ก๊ทธ๋จ์์ ์ถ๋ ฅํ ์ ์๊ฒ ํ ๊ฒ.
JSP๋ HTML ์์ ์๋ฐ๋ฅผ ์คํฌ๋ฆฝํ๋ฆฟ์ผ๋ก ์ฌ์ ์ ์๊ฒ ํ ๊ฒ์ด๋ค.
JSP๋ง์ ์ด์ฉํ ๊ฒฝ์ฐ, ์ฒ๋ฆฌ๊ฐ ๋ณต์กํ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค ๋ JSP ์์ ๊ธฐ์ ๋๋ ์ฝ๋๊ฐ ๋์ด๋ ๊ฐ๋ฐ ๊ด๋ฆฌ๊ฐ ํ๋ค์ด์ง๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด HTML ํ์๋ JSP๊ฐ, ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ์๋ธ๋ฆฟ์ด ๋ด๋นํ๊ฒ ํ๋ค.
<!-- ์๋ธ๋ฆฟ ์ ์ -->
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>kr.co.wiki.webtext.pizza.servlet.LoginServlet</servlet-class>
</servlet>
<!-- ์๋ธ๋ฆฟ ๋งคํ -->
<servlet-mapping>
<servlet-name>login</servlet-name>
<servlet-pattern>login.do</servlet-pattern>
</servlet-mapping>
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String id = req.getParameter("realname");
String password = req.getParameter("mypassword");
}
ํฌ์๋ vs ๋ฆฌ๋ค์ด๋ ํธ
์๋ธ๋ฆฟ์์ JSP๋ก ์ด๋์ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํ์ง ์๊ณ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ ๋ด์์๋ง ์งํ๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์
์์๋ ์ด์ ๊ฐ์ ์ด๋์ ํฌ์๋๋ผ๊ณ ํ๋ฉฐ ๋ฆฌ๋ค์ด๋ ํธ์๋ ๊ตฌ๋ถ๋๋ค.
- ๋ฆฌ๋ค์ด๋ ํธ : ์ํ์ฝ๋ 302๋ฅผ ํตํด ์ด๋ํ URL์ ์๋ ค์ฃผ์ด ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ค์ ์์ฒญ์ ๋ณด๋ธ๋ค. (์์ฒญ์ด 2๋ฒ ์ผ์ด๋จ)
- ํฌ์๋ : ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ ๋ด์์๋ง ์ด๋ ์ฒ๋ฆฌ๊ฐ ์งํ๋์ด ์๋ฒ์ธก ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ํด๋ผ์ด์ธํธ๋ก ๋์์จ๋ค. (์์ฒญ์ด 1๋ฒ ์ผ์ด๋จ)
์์ฒญ ์ค์ฝํ
์๋ธ๋ฆฟ๊ณผ JSP ์ฌ์ด์์ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ธฐ ์ํ ๋ฐฉ์์ด๋ค.
์ฆ, ํฌ์๋ ํ ๊ณณ๊ณผ ํฌ์๋ ๋ ๊ณณ ์ฌ์ด์์ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ธฐ ์ํ ๋ฐฉ์์ด๋ค.
์์ฒญ ๋งค๊ฐ๋ณ์์์ ์ฐจ์ด
- ์์ฒญ ๋งค๊ฐ๋ณ์ : HTTP ๋ฉ์๋๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌธ์์ด๋ก ์ ๋ฌ๋๋ค. ์๋ธ๋ฆฟ์ด๋ JSP์์ ์ฐธ์กฐ๋ ํ ์ ์์ง๋ง ๋ฐ์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์์ฒญ ์ค์ฝํ : ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์ ์ ๊ณต๋๋ ๊ตฌ์กฐ๋ก, ํฌ์๋ ์ ํ์ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ ์ ์๋ค. ํ์ง๋ง HTTP ์์ฒญ์ 1ํ ์ฒ๋ฆฌํ๋ ๋์๋ง ์ ํจํ๋ฏ๋ก ์์ฒญ ์ฒ๋ฆฌ๊ฐ ์ข ๋ฃ๋๋ฉด ์์ฒญ ์ค์ฝํ์ ๋ด๊ฒผ๋ ์ ๋ณด๋ ์ฌ๋ผ์ง๋ค. ์ฆ ๋ฆฌ๋ค์ด๋ ํธ์์๋ ์ ๋ณด๋ฅผ ์ธ๊ณํ ์ ์๋ค.
์์ฒญ ์ค์ฝํ๊ฐ ํ์ํ ์ด์
์ธ์
์ ๋ณด์กดํ ์ ๋ณด๋ฅผ ์ธ์ ํด์ ํด์ผ ํ ์ง ๋ชจ๋ฅธ๋ค.
์ด๋ฅผ ์ธ์
ํ์์์์ผ๋ก ํด๊ฒฐํ ์ ์์ง๋ง ์ธ์
์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ง์ด ์๋นํ๋ ๋จ์ ์ด ์๋ค.
์ธ์ ์ค์ฝํ์ ์์ฒญ ์ค์ฝํ์ ์ฐจ์ด
ย | ์ธ์ ์ค์ฝํ | ์์ฒญ ์ค์ฝํ |
---|---|---|
์ ํจ ๋ฒ์ | ์ธ์ ์์, ์ข ๋ฃ ๋๋ ํ์์์ ๋ ๋๊น์ง | ์์ฒญ ๋ฐ์ ๋ค์ ์๋ต์ ๋๋ ค์ค ๋๊น์ง |
์์๊ณผ ์ข ๋ฃ | ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ด | ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๊ฐ ์ ์ด |
์ฃผ๋ ์ฉ๋ | ์ฌ์ฉ์ ์ ๋ณด์ ๋ณด์กด | ํ์ด์ง ์ด๋์ ํ์ ๋ณด์กด |
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํคํ ์ณ
๊ฑด์ถ์ ํ ๋ ๊ผผ๊ผผํ ์ค๊ณ๋ฅผ ํ๋ฏ, ์ํํธ์จ์ด๋ ๊ฐ๋ฐ ์ด๊ธฐ์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ฒ ์ ํ ๊ฒํ ํด์ผํ๋ค.
- ์ํคํ ์ฒ : ์ํํธ์จ์ด๋ ํ์ฐ์ ์ผ๋ก ๋ฎ์ ๋ถ๋ถ์ด ๋ํ๋๋๋ฐ, ์ด๋ฐ ์ค๊ณ ์คํ์ผ๊ณผ ์ค๊ณ์ ๋ฐํ์ ๋ ์ ์ฒด ๊ตฌ์กฐ
โ ์๋ฐ๋ฅผ ๋ถํํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ - JavaBeans
์๋ฐ ํด๋์ค๋ฅผ ๋ถํํํ๊ธฐ ์ํ ๊ฒ์ผ๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์
์์๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด์กดํ๊ธฐ ์ํ ํด๋์ค ์ ๋์ ์๋ฏธ๋ฐ์ ์๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ฐ๋น์ฆ๋ ํ๋์ ๋์ํ๋ ์ธํฐ์ ๊ฒํฐ๊ฐ ์กด์ฌํ๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ ์ ์ฒ๋ฆฌ๋ฅผ ๋น์ฆ๋์ด๋ผ๊ณ ํ๋ค.
๋น์ฆ๋์ค ๋ก์ง์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ํฅ๋ฐ์ง ์๊ณ ์กด์ฌํ๋ ๋ถ๋ถ์ด๋ค.
ex) ํ์ ๊ด๋ฆฌ ์๋น์ค๋ฅผ ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋๋ผ GUI ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ๊ตฌํํ๋ค๋ฉด, ํ๋ฉด ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฌ๋ผ์ง์ง๋ง ๋ก๊ทธ์ธ ์ฒ๋ฆฌ๋ ๊ฐ๋ค.
JDBC๋ฅผ ํตํ DB ์ ๊ทผ
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํ API๋ก JDBC๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ฐ์ดํฐ ์์ค ํ๋ : ๋ฐ์ดํ ๋ฒ ์ด์ค์ ๋ํ ์ ์์ ๊ตฌํ๊ธฐ ์ํ ๊ฐ์ฒด
- ์ฐ๊ฒฐ ํ๋
- SQL์ ์คํ
- SQL ์คํ ๊ฒฐ๊ณผ์ ์ทจ๋
JDBC๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋จ์
๋จ์ํ ์ฟผ๋ฆฌ์๋ ๋ฐฉ๋ํ ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค.
MVC + Layered Architecture
Layered Architecture์ ์์คํ
์ ๊ณ์ธตํํ๊ณ ํ์ ๋ ์ด์ด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์์ ๋ ์ด์ด๊ฐ ์ด์ฉํจ์ผ๋ก ๊ฐ ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ๋จ์ํํ๋ค.
๊ฐ ๋ ์ด์ด๋ฅผ ๋จผ์ 3 ๊ณ์ธต์ผ๋ก ๋ถ๋ฆฌํ๋ค.
- ํ๋ ์ ํ ์ด์ ๋ ์ด์ด : ์ฌ์ฉ์์์ ์ธํฐํ์ด์ค๋ฅผ ๋ด๋นํ๋ ๋ ์ด์ด
- ๋น์ฆ๋์ค ๋ก์ง ๋ ์ด์ด : ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ตฌํํด์ผ ํ ๊ณ ์ ์ ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ ์ด์ด
- ๋ฐ์ดํฐ ์์ธ์ค ๋ ์ด์ด : ๋น์ฆ๋์ค ๋ก์ง ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค๊ฐํ๊ธฐ ์ํ ๋ ์ด์ด. ๋น์ฆ๋์ค ๋ก์ง์์ ๋ถ๋ฆฌํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ์ฐจ๋ฅผ ์์ํ์ง ์๊ฒ ํด์ค๋ค.
์ปจํธ๋กค๋ฌ์ ๋ทฐ๋ ํ๋ ์ ํ ์ด์ ๋ ์ด์ด์ด๋ฉฐ, ๋ชจ๋ธ์ ๋น์ฆ๋์ค ๋ก์ง ๋ ์ด์ด์ ๋ฐ์ดํฐ ์์ธ์ค ๋ ์ด์ด๊ฐ ๋๋ค.
DAO ํจํด์ ์ด์ฉํ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ ์ด์ด์ ๊ตฌํ
DAO์ ์ญํ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์์ ์ํํ๋ ๊ฒ์ด๋ค.
RDB์ ๊ฐ์ฒด์ ์ํผ๋์ค ๋ถ์ผ์น
OR ๋งคํ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋์์ํจ๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ ์ฌ๋ฌ ๊ฐ์ ํ
์ด๋ธ๊ณผ ๊ทธ ๊ด๊ณ๋ฅผ ์ด์ฉํด ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค.
๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ณธ์ง์ ์ผ๋ก๋ ๊ฐ์ ์ ๋ณด์ด์ง๋ง, ํํ ๋ฐฉ๋ฒ์๋ ํฐ ์ฐจ์ด๊ฐ ์์ ์ ์๋ค.
์ด๋ฅผ ์ํผ๋์ค ๋ถ์ผ์น๋ผ๊ณ ํ๋ค.
์ด๋ฐ ์ํผ๋์ค ๋ถ์ผ์น๋ฆ ํด๊ฒฐํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก OR ๋งคํ ํ๋ ์ ์ํฌ์ด๋ค.
(์ด ๋ฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ์์ ๊ด๋ฆฌํ๊ฑฐ๋, ์ ๋ณด๋ฅผ ์บ์ฑํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์์ ๋น ๋ฅด๊ฒ ํ๋ ๋ฑ์ ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ค.)
์์ด๋ฐํฐ์ค๋ฅผ ์ด์ฉํ๋ฉด SQL์ด๋ ํ ์ด๋ธ์ ๊ตฌ์ฑ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ์์ค์ฝ๋๊ฐ ์๋๋ผ SQL ์ฑ ํ์ผ๋ง ๋ฐ๊พธ๋ฉด ๋์ด ๋ณ๊ฒฝํ๊ธฐ ์ฝ๋ค.
ํ๋ ์์ํฌ ์ด์ฉ์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
- ์ค๊ณ, ๊ฐ๋ฐ ๊ณต์์ ์ ๊ฐ : ์์ด๋ฐํฐ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ๊ดํ ๋๋ถ๋ถ์ ์ฒ๋ฆฌ๋ฅผ ๋์ ํด์ค๋ค.
- ํ์ง ํฅ์
- ํ ์คํธ ๊ณต์์ ์ ๊ฐ
๋จ์
- ํ์ต ๋น์ฉ์ ์ฆ๋
- ์ค๊ณ์ ์์ ๋ ์ ํ
- ์ฅ๊ธฐ์ ์ธ ๊ธฐ์ ๋ ฅ์ ์ ํ