JSP
Web
โข
์ธํฐ๋ท: ์ปดํจํฐ ๋คํธ์ํฌ๋ง
โข
์น: ์ธํฐ๋ท ์๋น์ค ์ค ํ๋
โฆ
์ธํฐ๋ท ์์ ์ ๋ณด๋ฅผ ํ์ดํผํ
์คํธ ๋ฐฉ์๊ณผ ๋ฉํฐ๋ฏธ๋์ด ํ๊ฒฝ์์ ๊ฒ์ํ ์ ์๊ฒ ํด์ฃผ๋ ์ ๋ณด ๊ฒ์ ์์คํ
โฆ
HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ฉฐ, HTML๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ค์ํ ์ฝํ
์ธ ๋ฅผ ์ ๊ณต
โฆ
ํ์ดํผํ
์คํธ:
์ฐธ์กฐ(ํ์ดํผ๋งํฌ)๋ฅผ ํตํด ๋
์๊ฐ ํ ๋ฌธ์์์ ๋ค๋ฅธ ๋ฌธ์๋ก ์ฆ์ ์ ๊ทผํ ์ ์๋ ํ
์คํธ
โข
๋์ ๊ตฌ์กฐ
โฆ
HTML๋ก ๋ง๋ค์ด์ง ์ฝํ
์ธ ๋ ์น ์๋ฒ(Web Server)๋ผ๊ณ ํ๋ ๋ณ๋์ ์๋ฒ ์ํํธ์จ์ด๋ฅผ ํตํด ์๋น์ค๋ก ์ ๊ณต๋๋ค.
โฆ
์น ์๋ฒ ์ํํธ์จ์ด๋ก๋ ์ํ์น(Apache)๊ฐ ๋ํ์ ์ด๋ค.
โฆ
๋ํ ์น ์๋น์ค๋ฅผ ์์ฒญํ ํด๋ผ์ด์ธํธ์์ ์๋น์ค๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์๋ ์น ๋ธ๋ผ์ฐ์ (Web Browser)๊ฐ ํ์ํ๋ค.
๋คํธ์ํฌ
โข
๋คํธ์ํฌ(Network)๋ ์ฌ๋ฌ ์ปดํจํฐ๋ค์ ํต์ ํ์ ์ผ๋ก ์ฐ๊ฒฐํ ๊ฒ์ ๋งํ๋ค.
โข
LAN(Local Area Network)์ ๊ฐ์ , ํ์ฌ, ๊ฑด๋ฌผ, ํน์ ์์ญ์ ์กด์ฌํ๋ ์ปดํจํฐ๋ฅผ ์ฐ๊ฒฐํ ๊ฒ์ด๋ค.
โข
WAN(Wide Area Network)๋ LAN์ ์ฐ๊ฒฐํ ๊ฒ์ผ๋ก, ์ฐ๋ฆฌ๊ฐ ํํ ๋งํ๋ ์ธํฐ๋ท์ WAN์ด๋ค.
โข
์น์ ์ธํฐ๋ท ๊ธฐ๋ฐ ์๋น์ค ์ค ํ๋์ด๊ณ , ์ธํฐ๋ท์ ์ ์ธ๊ณ๋ฅผ ์ฐ๊ฒฐํ ์ปดํจํฐ ๋คํธ์ํฌ์ด๋ค.
โข
๋คํธ์ํฌ(Network)๋ ์ปดํจํฐ์ ์ปดํจํฐ๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๋ง(Net)์ผ๋ก, ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด์๋ ์ปดํจํฐ ๊ฐ์ ์ฐ๊ฒฐ ๊ท๊ฒฉ, ๊ท์ฝ์ด ํ์ํ๋ค.
โข
์ปดํจํฐ ๊ฐ์ ์ฐ๊ฒฐ ๊ท๊ฒฉ, ๊ท์ฝ์ ํ๋กํ ์ฝ(Protocol)์ด๋ผ ํ๋ค.
ํ๋กํ ์ฝ
โข
์ปดํจํฐ ๊ฐ์ ํต์ ์ ํ ์ ์๋๋ก ๋ง๋ ํ๋กํ ์ฝ์๋ TCP ํต์ ๊ณผ UDP ํต์ ์ด ์๋ค.
โข
TCP (์ด๋ฉ์ผ, ํ์ผ ์ ์ก, DB ์ฐ๋)
โฆ
TCP(Transmission Control Protocol)์ ์ฐ๊ฒฐํ ํ๋กํ ์ฝ๋ก, ์๋๋ฐฉ์ด ์ฐ๊ฒฐ๋ ์ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. ์ฆ, ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์์ฒญ๊ณผ ์๋ฒ์ ์ฐ๊ฒฐ ์๋ฝ์ผ๋ก ํต์ ํ์ ์ด ๊ณ ์ ๋์ด, ๋ฐ์ดํฐ๊ฐ ์์ค์์ด ์์๋๋ก ์ ๋ฌ๋๋ค.
โฆ
TCP๋ IP์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ TCP/IP ๋ผ๊ณ ํ๋ค.
์น ๋ธ๋ผ์ฐ์ ๊ฐ ์น ์๋ฒ์ ์ฐ๊ฒฐํ ๋, ์ด๋ฉ์ผ ์ ์ก, ํ์ผ ์ ์ก, DB ์ฐ๋ ๋ฑ์ ์ฐ์ธ๋ค.
โข
UDP (๋ฌด์ ๊ธฐ)
โฆ
UDP(User Datagram Protocol)์ ๋ฐ์ ์๊ฐ ์ผ๋ฐฉ์ ์ผ๋ก ์์ ์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์ผ๋ก,
TCP/IP ์ฒ๋ผ ์ฐ๊ฒฐ ์์ฒญ ๋ฐ ์๋ฝ ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์ TCP๋ณด๋ค ๋ฐ์ดํฐ ์ ์ก ์๋๊ฐ ์๋์ ์ผ๋ก ๋น ๋ฅด๋ค.
(์ค๊ฐ ๊ฒ์ฆ ์ ์ฐจ๊ฐ ์๊ธฐ ๋๋ฌธ์ TCP๋ณด๋ค ๋ฐ์ดํฐ ์ ์ก ์๋๊ฐ ๋น ๋ฆ)
โฆ
ํ์ง๋ง ๊ณ ์ ํ์ ์ด ์๋๋ผ ์ฌ๋ฌ ํ์ ์ ํตํด ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๊ธฐ ๋๋ฌธ์ ํน์ ํ์ ์ ์๋์ ๋ฐ๋ผ ๋ฐ์ดํฐ๊ฐ ์์๋๋ก ์ ๋ฌ๋์ง ์๊ฑฐ๋, ์๋ชป๋ ํ์ ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํ ์ ์๋ค.
TCP/IP
โข
ํ๋์จ์ด, ์ด์์ฒด์ , ์ ์ ๋งค์ฒด์ ๊ด๊ณ์์ด ๋์ํ ์ ์๋ค.
โข
TCP/IP๋ OSI(Open Systems Interconnection) 7๊ณ์ธต์์ ์ ๋ํ ๊ฒ์ผ๋ก 4๊ณ์ธต ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด ์
โฆ
์์ฉ ๊ณ์ธต - WWW, FTP, Telnet, SMTP์ ๊ฐ์ ๋คํธ์ํฌ ํ๋ก๊ทธ๋จ
โฆ
์ ์ก ๊ณ์ธต - ๊ฐ ์์คํ
์ ์ฐ๊ฒฐํ๊ณ TCP ํ๋กํ ์ฝ์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์ก
โฆ
์ธํฐ๋ท ๊ณ์ธต - IP ํ๋กํ ์ฝ์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๊ณ ๊ฒฝ๋ก๋ฅผ ๋ฐฐ์
โฆ
๋ฌผ๋ฆฌ ๊ณ์ธต - ์ค์ ๋คํธ์ํฌ์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๋ฌผ๋ฆฌ์ ์ธ ๋ถ๋ถ
โข
OSI 7๊ณ์ธต์ ๋คํธ์ํน์ ์ํ ๋ฌผ๋ฆฌ์ ์ฅ๋น์์ ์ค ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ฅด๋ ๋จ๊ณ๊น์ง ๊ณ์ธตํ ํ ๊ฒ์ด๋ค.
(๋ฌผ-๋ฐ-๋ค-์ -์ธ-ํ-์)
โฆ
TCP/IP๋ ์ด๋ฌํ OSI 7๊ณ์ธต์ ์ข ๋ ๋จ์ํํ์ฌ 4๊ณ์ธต์ผ๋ก ์ ์ํ ๊ฒ์ด๋ค.
TCP ๋คํธ์ํน
โข
Java๋ TCP ๋คํธ์ํน์ ์ํด java.net์ ServerSocket ํด๋์ค์ Socket ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค.
โข
ServerSocket์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ์๋ฝํ๋ ์๋ฒ ์ชฝ ํด๋์ค์ด๊ณ , Socket์ ํด๋ผ์ด์ธํธ์์ ์ฐ๊ฒฐ์ ์์ฒญํ ๋ ๋๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์์ชฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ๋๋ ํด๋์ค์ด๋ค.
IP ์ฃผ์
โข
๊ฐ๊ฐ์ ์ง๋ง๋ค ๊ณ ์ ํ ์ฃผ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฐํธ๋ฌผ์ด๋ ํ๋ฐฐ๋ฌผ์ด ์ ํํ๊ฒ ์ง์ ์ฐพ์ ๋์ฐฉํ ์ ์๊ฒ ๋๋ค.
โข
๋ง์ฐฌ๊ฐ์ง๋ก ์ปดํจํฐ์๋ ๊ณ ์ ํ ์ฃผ์๊ฐ ์๋ค. ์ด๋ฅผ IP ์ฃผ์(Internet Protocol Address)๋ผ๊ณ ํ๋ค.
โข
IP ์ฃผ์(IP Address)๋ TCP/IP๋ก ์ฐ๊ฒฐ๋ ๋คํธ์ํฌ์์ ๊ฐ๊ฐ์ ์ปดํจํฐ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ฃผ์์ด๋ค.
โข
IP ์ฃผ์๋ 4๊ฐ๋ก ๊ตฌ๋ถ๋ 10์ง์ ์ซ์๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ์ฌ์ฉํ ์ ์๋ IP ์ฃผ์ ๋ฒ์๋ ์๋์ ๊ฐ๋ค.
โข
IP ์ฃผ์๋ ๋คํธ์ํฌ ์ด๋ํฐ(LAN ์นด๋)๋ง๋ค ํ ๋น๋๋ค.
โข
๋ง์ฝ ์ปดํจํฐ์ ๋ ๊ฐ์ ๋คํธ์ํฌ ์ด๋ํฐ๊ฐ ์ฅ์ฐฉ๋์ด ์๋ค๋ฉด, ๋ ๊ฐ์ IP ์ฃผ์๋ฅผ ํ ๋น ๋ฐ์ ์ ์๋ค.
โข
๋คํธ์ํฌ ์ด๋ํฐ์ ์ด๋ค IP ์ฃผ์๊ฐ ๋ถ์ฌ๋์ด ์๋์ง ํ์ธํ๋ ค๋ฉด ํฐ๋ฏธ๋์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ๋๋ค.
โฆ
์๋์ฐ๋ ipconfig, ๋งฅOS๋ ifconfig ๋ช
๋ น์ด๋ฅผ ์
๋ ฅ
โข
์ด๋ก ์ ์ผ๋ก๋ ์ปดํจํฐ๊ฐ IP ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋, ์๋ง์ ์ปดํจํฐ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ณ ์ ํ IP์ฃผ์๋ฅผ ํ ๋นํ๊ธฐ์๋ ํ๊ณ๊ฐ ์๋ค.
โข
์ฌ์ค IP๋ ์ผ๋ฐ์ ์ผ๋ก 10.0.0.0, 192.0.0.0 ๋ฑ์ ๋ช ๊ฐ์ง IP ๋ธ๋ก์ ์ฌ์ฉํ์ง๋ง, ์ค์ ๋ก๋ ๋ชจ๋ ์ธํฐ๋ท IP๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
โข
๋คํธ์ํฌ ๊ตฌ์ฑ ์ ์ง์ ์ฐ๊ฒฐํ์ง๋ ์์ง๋ง, ๋ผ์ฐํฐ ์ฅ๋น์์ ์ ๊ณตํ๋ NAT(Network Access Tranlator) ๊ธฐ๋ฅ์ ์ด์ฉํ๋ค. NAT๋ฅผ ์ด์ฉํด ๊ณต์ธ IP๋ก ๋์ํ๋ฉด ์ธํฐ๋ท์ ์ ์ํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
โข
์ ํ๋ฒํธ๋ฅผ ๋ชจ๋ฅด๋ฉด ์ ํ๋ฅผ ๊ฑธ ์ ์๋ฏ, ์ฐ๊ฒฐํ๊ณ ์ถ์ ์ปดํจํฐ์ IP ์ฃผ์๋ฅผ ๋ชจ๋ฅด๋ฉด ํ๋ก๊ทธ๋จ์ ์๋ก ํต์ ํ ์ ์๊ฒ ๋๋ค.
โข
114์ ์ ํ๋ฒํธ๋ฅผ ๋ฌธ์ํ๋ฏ, ํ๋ก๊ทธ๋จ์์๋ DNS(Domain Network System)๋ฅผ ์ด์ฉํด ์ปดํจํฐ์ IP ์ฃผ์๋ฅผ ๊ฒ์ํ๋ค.
โข
์ฌ๊ธฐ์์ DNS๋ ๋๋ฉ์ธ ์ด๋ฆ์ผ๋ก, IP๋ฅผ ๋ฑ๋กํ๋ ์ ์ฅ์์ด๋ค.
โข
๋์ค์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋๋ถ๋ถ์ ์ปดํจํฐ๋ ๋๋ฉ์ธ ์ด๋ฆ์ผ๋ก IP๋ฅผ DNS์ ๋ฏธ๋ฆฌ ๋ฑ๋กํด๋๋๋ค.
โข
์น ๋ธ๋ผ์ฐ์ ๋ ์น ์๋ฒ์ ํต์ ํ๋ ํด๋ผ์ด์ธํธ๋ก, ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋๋ฉ์ธ ์ด๋ฆ์ผ๋ก DNS์์ IP ์ฃผ์๋ฅผ ๊ฒ์ํด ์ฐพ์ ์น ์๋ฒ์ ์ฐ๊ฒฐํ๊ณ ์น ํ์ด์ง๋ฅผ ๋ฐ์์จ๋ค.
์ธํฐ๋ท ๊ธฐ๋ฐ ์๋น์ค
โข
์ธํฐ๋ท ๊ธฐ๋ฐ์ ๋ํ์ ์ธ ์๋น์ค๋ ์น ์ด์ธ์๋ ์ด๋ฉ์ผ, FTP, Telnet, DNS ๋ฑ์ด ์๋ค.
โข
์ธํฐ๋ท ๊ธฐ๋ฐ ์๋น์ค๋ ๊ฐ๊ฐ์ ํด๋นํ๋ ํ๋กํ ์ฝ๊ณผ ํฌํธ๊ฐ ์ ํด์ ธ ์๋ค.
Port
โข
ํฌํธ(Port)๋ ๋คํธ์ํฌ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ์ผ์ข
์ ์ถ์
๋ฌธ์ด๋ค.
โข
์ฆ, ํ๋์ ์ปดํจํฐ์์ ์ฌ๋ฌ ๊ฐ์ ๋คํธ์ํฌ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ,
์ด๋ค์ ๊ตฌ๋ถํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
โข
ํ ๋์ ์ปดํจํฐ์๋ ํ๋ ์ด์์ ๋ค์ํ ์๋ฒ ํ๋ก๊ทธ๋จ๋ค์ด ์คํ๋ ์ ์๋ค.
โข
์น ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
, FTP ์๋ฒ ๋ฑ์ด ํ๋์ IP ์ฃผ์๋ฅผ ๊ฐ๋ ์ปดํจํฐ์์
๋์์ ์คํ๋ ์ ์๋ค.
โข
IP๋ ์ปดํจํฐ์ ๋คํธ์ํฌ ์ด๋ํฐ๊น์ง ๊ฐ ์ ์๋ ์ ๋ณด์ด๊ณ , ์ปดํจํฐ ๋ด๋ถ์์๋ ์คํํ๋ ์๋ฒ๋ฅผ ์ ํํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ Port ๋ฒํธ๊ฐ ํ์ํ๋ค.
โข
์ฆ, Port๋ ์ด์์ฒด์ ๊ฐ ๊ด๋ฆฌํ๋ ์๋ฒ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐ ๋ฒํธ์ด๋ค.
โข
์๋ฒ๋ ์์ํ ๋ ํน์ Port ๋ฒํธ์ ๋ฐ์ธ๋ฉ๋๋ค.
(์๋ฅผ ๋ค์ด, ์น ์๋ฒ๋ 80๋ฒ์ผ๋ก, DBMS๋ 3306๋ฒ์ผ๋ก ๋ฐ์ธ๋ฉํ ์ ์๋ค.)
โข
ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋ ์ ์ฒด Port ๋ฒํธ์ ๋ฒ์๋ 0 ~ 65335๋ก,
์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ์ธ ๊ฐ์ง ๋ฒ์๋ฅผ ๊ฐ์ง๋ค.
โข
โข
InetAddress๋ฅผ ์ด์ฉํ๋ฉด ๋ก์ปฌ ์ปดํจํฐ์ IP ์ฃผ์๋ฅผ ์ป์ ์ ์๊ณ ,
๋๋ฉ์ธ ์ด๋ฆ์ผ๋ก DNS์์ ๊ฒ์ํ ํ IP ์ฃผ์๋ฅผ ๊ฐ์ ธ์ฌ ์๋ ์๋ค.
โข
๋ก์ปฌ ์ปดํจํฐ์ InetAddress๋ฅผ ์ป๊ณ ์ถ๋ค๋ฉด InetAddress.getLocalHost( ) ๋ฉ์๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ํธ์ถํ๋ฉด ๋๋ค.
public class IpExample {
public static void main(String[] args) throws UnknownHostException {
InetAddress local = InetAddress.getLocalHost();
System.out.println("๋ด ์์ดํผ: " + local.getHostAddress());
InetAddress[] remoteArr = InetAddress.getAllByName("www.naver.com");
for (InetAddress remote : remoteArr) {
System.out.println("naver ์์ดํผ:" + remote.getHostAddress());
}
}
}
Java
๋ณต์ฌ
์๋ฒ์ ํด๋ผ์ด์ธํธ
โข
๋คํธ์ํฌ ์์ ์ ๋ฌด์ ์ผ๋ก ์ปดํจํฐ๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด, ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํ์๋ ํ๋ก๊ทธ๋จ๋ค์ด ํ๋ค.
โข
์๋น์ค๋ฅผ ์ ๊ณตํ๋ ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ(Server)๋ผ๊ณ ๋ถ๋ฅด๊ณ , ์๋น์ค๋ฅผ ์์ฒญํ๋ ํ๋ก๊ทธ๋จ์ ํด๋ผ์ด์ธํธ(Client)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
JSON ๋ฐ์ดํฐ ํ์
โข
๋คํธ์ํฌ๋ก ์ ๋ฌํ๋ ๋ฐ์ดํฐ๊ฐ ๋ณต์กํ ์๋ก ๊ตฌ์กฐํ๋ ํ์์ด ํ์ํ๋ค.
โข
๋คํธ์ํฌ ํต์ ์์ ์ต๊ทผ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ์์ JSON(JavaScript Object Notation)์ด๋ค.
โข
Java์์ JSON์ ๋ฌธ์์ด๋ก ์ง์ ์์ฑํ ์ ์์ง๋ง, ๋๋ถ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ ์์ฑํ๋ค.
โข
JSON์ ๋ค๋ฃจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ข
๋ฅ๋ ๋ค์ํ๊ณ , ์ด์ ๋ฐ๋ผ ํ๋ก์ ํธ๋ง๋ค ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ฐ๊ฐ์ด๋ค.
โข
์ฐธ๊ณ ์ฌ์ดํธ
Web Application
โข
์น ์ ํ๋ฆฌ์ผ์ด์
์ ์น์์ ์คํ๋๋ ์์ฉํ๋ก๊ทธ๋จ์ ๋ปํ๋ฉฐ, ์ธํฐ๋ท์ ํตํ ์ฌ๋ฌ๊ฐ์ง์ ์๋น์ค๋ฅผ ์ผ์ปซ๋๋ค.
โข
์ฌ์ฉ์๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ Request(์์ฒญ)ํ๊ณ , ์๋ฒ์์๋ ์ฌ์ฉ์์ Request๋ฅผ ์ํํ๋ฉฐ, ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ Response(์๋ต)ํ๊ฒ ๋๋ ํ์์ด๋ค.
โข
์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑ ์์
1.
์น ๋ธ๋ผ์ฐ์ : ํด๋ผ์ด์ธํธ์์ ์์ฒญ์ ํ๊ณ , ์ ๋ฌ๋ฐ์ ํ์ด์ง๋ฅผ ๋ณผ ์ ์๋ ํ๊ฒฝ
2.
์น ์๋ฒ : ์๋ฒ์ ์ ์ฅ๋ ๋ฆฌ์์ค๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ ์ญํ (์ฃผ๋ก ์ ์ ์ฝํ
์ธ )
3.
์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ :
WAS๋ผ ๋ถ๋ฅด๋ฉฐ, ์๋ฒ์์ ํ์ํ ๊ธฐ๋ฅ์ ์ํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์น ์๋ฒ์ ์ ๋ฌํ๋ ์ญํ
4.
๋ฐ์ดํฐ๋ฒ ์ด์ค : ์๋น์ค์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ด, ๊ฐฑ์ ๋ฑ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ ์ญํ
โข
์ค์ต
// ClientExample.java
package com.client;
import java.io.IOException;
import java.net.Socket;
public class ClientExample {
public static void main(String[] args) {
try {
Socket s = new Socket("172.30.1.30", 8080);
System.out.println("[ํด๋ผ์ด์ธํธ] ์ฐ๊ฒฐ ์ฑ๊ณต");
s.close();
System.out.println("[ํด๋ผ์ด์ธํธ] ์ฐ๊ฒฐ ์ข
๋ฃ");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
// ServerExample.java
package com.server;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import java.util.Scanner;
public class ServerExample {
private static ServerSocket ss = null;
public static void main(String[] args) {
System.out.println("์๋ฒ๋ฅผ ์ข
๋ฃํ๋ ค๋ฉด q๋ฅผ ์
๋ ฅํ์ธ์.");
startServer();
Scanner sc = new Scanner(System.in);
while (true) {
if (sc.nextLine().toLowerCase().equals("q")) {
break;
}
}
sc.close();
stopServer();
}
private static void startServer() {
Thread thread = new Thread() {
@Override
public void run() {
try {
ss = new ServerSocket(8080);
System.out.println("[์๋ฒ] ์๋ฒ ์์");
while (true) { // Listening
System.out.println("[์๋ฒ] ์์ฒญ ๊ธฐ๋ค๋ฆฌ๋ ์ค...");
Socket s = ss.accept();
InetSocketAddress isa = (InetSocketAddress) s.getRemoteSocketAddress();
String clientIP = isa.getHostString();
System.out.println("[์๋ฒ] " + clientIP + "์ ์ฐ๊ฒฐ ์์ฒญ ์๋ฝ");
s.close();
System.out.println("[์๋ฒ] " + clientIP + "์์ ์ฐ๊ฒฐ ์ข
๋ฃ");
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
thread.start();
}
private static void stopServer() {
try {
ss.close();
System.out.println("[์๋ฒ] ์ข
๋ฃ");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java
๋ณต์ฌ
ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ๋
์์ฒญ๊ณผ ์๋ต
โข
์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๊ธฐ์ ๋์ํ๋ค.
โข
ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์์ฒญ(request)์ ๋ณด๋ด๊ณ , ์๋ฒ์์๋ ์์ฒญ์ ๋ด์ฉ์ ์ฝ๊ณ ์ฒ๋ฆฌํ ๋ค ํด๋ผ์ด์ธํธ์
์๋ต(response)์ ๋ณด๋ธ๋ค.
โข
์ฆ, ์๋ฒ์๋ ์์ฒญ์ ๋ฐ๋ ๋ถ๋ถ๊ณผ ์๋ต์ ๋ณด๋ด๋ ๋ถ๋ถ์ด ์์ด์ผ ํ๋ค.
โข
๋ชจ๋ ์์ฒญ๊ณผ ์๋ต์ ํค๋(Header)์ ๋ณธ๋ฌธ(Body)์ ๊ฐ์ง๊ณ ์๋ค.
โฆ
ํค๋๋ ์์ฒญ ๋๋ ์๋ต์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ณณ์ด๊ณ
โฆ
๋ณธ๋ฌธ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ฃผ๊ณ ๋ฐ์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋๋ ๊ณต๊ฐ์ด๋ค.
HTTP
โข
HTTP๋ HTML ๋ฌธ์์ ๊ฐ์ ๋ฆฌ์์ค๋ค์ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ํด์ฃผ๋ ํ๋กํ ์ฝ์ด๋ค.
โข
HTTP๋ ์น์์ ์ด๋ฃจ์ด์ง๋ ๋ชจ๋ ๋ฐ์ดํฐ ๊ตํ์ ๊ธฐ์ด์ด๋ฉฐ, ํด๋ผ์ด์ธํธ-์๋ฒ ํ๋กํ ์ฝ์ด๊ธฐ๋ ํ๋ค.
โข
ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ค์ (๋ฐ์ดํฐ ์คํธ๋ฆผ๊ณผ ๋์กฐ์ ์ผ๋ก) ๊ฐ๋ณ์ ์ธ ๋ฉ์์ง ๊ตํ์ ์ํด ํต์ ํ๋ค.
โข
ํด๋ผ์ด์ธํธ์ ์ํด ์ ์ก๋๋ ๋ฉ์์ง๋ฅผ ์์ฒญ(requests)์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ,
๊ทธ์ ๋ํด ์๋ฒ์์ ์๋ต์ผ๋ก ์ ์ก๋๋ ๋ฉ์์ง๋ฅผ ์๋ต(responses)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
HTTP ํค๋
โข
HTTP ํค๋๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์์ฒญ ๋๋ ์๋ต์ผ๋ก ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ์กํ ์ ์๋๋ก ํด์ค๋ค.
โข
HTTP ํค๋๋ ์ฝ๋ก (:)์ ๊ธฐ์ค์ผ๋ก ํค์ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
โข
์ผ๋ฐ ํค๋(General header) :
์์ฒญ๊ณผ ์๋ต ๋ชจ๋์ ์ ์ฉ๋์ง๋ง Body์์ ์ ์ก๋๋ ๋ฐ์ดํฐ์๋ ๊ด๋ จ์ด ์๋ ํค๋.
โข
์์ฒญ ํค๋(Request header):
Fetch๋ ๋ฆฌ์์ค๋ ํด๋ผ์ด์ธํธ ์์ฒด์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ํฌํจํ๋ ํค๋.
โข
์๋ต ํค๋(Response header):
์๋ต์ ๋ํ ๋ถ๊ฐ์ ์ธ ์ ๋ณด(์์น ๋๋ ์๋ฒ ์์ฒด์ ๋ํ ์ ๋ณด ๋ฑ)๋ฅผ ๊ฐ๋ ํค๋.
โข
์ํฐํฐ ํค๋(Entity header):
์ฝํ
์ธ ๊ธธ์ด๋ MIME ํ์
๊ณผ ๊ฐ์ด Entity Body์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ํฌํจํ๋ ํค๋.
Tip:
HTTP ํค๋์ ํค๋ ๋์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์์ผ๋ฉฐ,
๊ฐ์ ์ค๋ฐ๊ฟ์ ์ธ์ํ์ง ์๊ณ ,
๋งจ ์์ ๋น ๋ฌธ์์ด์ ๋ฌด์๋๋ค๋ ํน์ง์ด ์๋ค
Java
๋ณต์ฌ
HTTP ์ํ ์ฝ๋
โข
์น ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์์ ๋ณด๋ด์ฃผ๋ ์ํ ์ฝ๋๋ฅผ ๋ณด๊ณ ์์ฒญ์ด ์ฑ๊ณตํ๋์ง ์คํจํ๋์ง๋ฅผ ํ๋จํ๋ค.
โข
200๋ฒ๋ ์ฝ๋ : ์ฑ๊ณต์ ์๋ฆฌ๋ ์ํ์ฝ๋. [ 200(์ฑ๊ณต), 201(์์ฑ๋จ) ]
โข
300๋ฒ๋ ์ฝ๋ : ๋ฆฌ๋ค์ด๋ ์
(๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋)์ ์๋ฆฌ๋ ์ํ ์ฝ๋.
๋ค๋ฅธ ์ฃผ์์ ํ์ด์ง๋ก ๋์ด๊ฐ ๋ ์ด ์ฝ๋๊ฐ ์ฌ์ฉ๋๋ค.
โข
400๋ฒ๋ ์ฝ๋ : ์์ฒญ ์์ฒด์ ์ค๋ฅ๊ฐ ์์ ๋ ํ์๋๋ ์ํ ์ฝ๋.
[ 401(๊ถํ์์), 403(๊ธ์ง๋จ), 404(์ฐพ์ ์ ์์) ]
โข
500๋ฒ๋ ์ฝ๋ : ์์ฒญ์ ์ ๋๋ก ์์ง๋ง ์๋ฒ์ ์ค๋ฅ๊ฐ ์๊ฒผ์ ๋ ๋ฐ์ํ๋ ์ํ ์ฝ๋.
HTTP ์์ฒญ ๋ฉ์๋
โข
GET:
์๋ฒ ์์์ ๊ฐ์ ธ์ค๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ฉฐ, ์์ฒญ์ ๋ณธ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ง ์๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด์ผ ํ๋ค๋ฉด ์ฟผ๋ฆฌ์คํธ๋ง์ ์ฌ์ฉํ๋ค. ( ?name=์์ ๋ก&age=20 )
โข
POST:
์๋ฒ์ ์์์ ์๋ก ๋ฑ๋กํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ฉฐ, ์์ฒญ์ ๋ณธ๋ฌธ์ ์๋ก ๋ฑ๋กํ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด ๋ณด๋ธ๋ค.
โข
PUT:
์๋ฒ์ ์์์ ์์ฒญ์ ๋ค์ด ์๋ ์์์ผ๋ก ์นํํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ฉฐ, ์์ฒญ์ ๋ณธ๋ฌธ์ ์นํํ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด ๋ณด๋
๋๋ค.
โข
PATCH:
์๋ฒ ์์์ ์ผ๋ถ๋ง ์์ ํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ฉฐ, ์์ฒญ์ ๋ณธ๋ฌธ์ ์ผ๋ถ ์์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด ๋ณด๋
๋๋ค.
โข
DELETE:
์๋ฒ์ ์์์ ์ญ์ ํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ฉฐ. ์์ฒญ์ ๋ณธ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ง ์๋๋ค.
โข
OPTIONS:
์์ฒญ์ ํ๊ธฐ ์ ์ ํต์ ์ต์
์ ์ค๋ช
ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์๋ธ๋ฆฟ ์ปจํ ์ด๋ (Servlet Container)
โข
WAS(Web Application Server)๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ๋ํ๋ ์๋ฒ๋ฅผ ์๋ฏธํ๋ค.
โฆ
์๋ฒ ์ปดํจํฐ๊ฐ WAS๋ก ๋์ํ๊ธฐ ์ํด์๋ Java EE ๋๋ ์ํ์น ํฐ์บฃ(Tomcat)๊ณผ ๊ฐ์ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๊ฐ ํ์ํ๋ค.
โฆ
WAS๋ ๋จ์ํ Java EE ๋๋ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ ๊ตฌ๋์ ์ํด ์กด์ฌํ๋ ๊ฒ์ ์๋๊ณ ,
์ด์ ๋ฐ ๊ด๋ฆฌ, ์ฅ์ ๋์ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ญํ ์ ํ๋ ์์คํ
์ด๋ค.
โข
๋ฌธ๋ฒ
<%-- jsp ์ ์ฃผ์๋ฌธ --%>
<%-- JSP ๊ฐ์ (java server pages)
==> ์นํ์ด์ง๋ฅผ ์์ฑํ๋ ์ธ์ด -> ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑํ๋ ์๋ฒ์ฝ๋
-java ์ฝ๋์ server ํํ๋ฅผ ๋๋ ํ์ด์ง
servlet ์ด ์๋์ผ๋ก ๋ง๋ค์ด์ง๋ค.
Servlet - Java(html)
Jsp - Html(java) -์ฝ๋ฉํ๊ธฐ๊ฐ ์์ํ๋ค
--%>
<% %> - ์๋ฐ๋ฅผ ํ์ HTML
Java
๋ณต์ฌ
<%--
scriptlet => script + applet -> java Code Area (์๋ฐ ์ฝ๋์ ์๋ฐ ์ฝ๋๋ฅผ ๋ฃ์ ์ ์๋ ๊ฒ) -- ์ด๋์ ํด๋ ์๊ด์์
--%>
Java
๋ณต์ฌ
์๋ธ๋ฆฟ์ด๋?
โข
์๋ธ๋ฆฟ์ด๋ Java ๊ธฐ๋ฐ์ Web ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์ํด ๋ง๋ค์ด์ง ๊ธฐ์ ์ด๋ค.
โข
์๋ธ๋ฆฟ์ ์คํํ๊ธฐ ์ํด์๋ ํฐ์บฃ๊ณผ ๊ฐ์ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๊ฐ ํ์ํ๋ฉฐ, ์ด๋ฅผ ์ผ๋ฐ์ ์ผ๋ก WAS๋ผ ๋ถ๋ฅธ๋ค.
โข
๋ฐ์คํฌํฑ์ด๋ ์ค๋งํธํฐ์์ ์คํ๋๋ ์ผ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๋ฌ๋ฆฌ ์น ํ๋ก๊ทธ๋จ์ ์๋ฒ์์ ์ ์ํด์ผ ํ๋ฉด์ ๋ณผ ์ ์๋ค.
โข
์ด ๋ HTML์ ์ ์ ํ์ผ์ด๋ฏ๋ก ์ค์๊ฐ์ผ๋ก ๋ณํ๋ ๋ด์ค ๊ธฐ์ฌ, ๋ ์จ ์ ๋ณด, ์ผํ๋ชฐ์ ์ํ ์ ๋ณด ๋ฑ์ ๊ฐ์ง๊ณ ์์ ์ ์๋ค.
โข
์ด๋ฌํ ์ ๋ณด๋ DB์ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์ ์น ์์ฒญ์ ๋ฐ์ผ๋ฉด
๋ณ๋์ ํ๋ก๊ทธ๋๋ฐ์ ํตํด DB์์ ๊ฐ์ ธ์ HTML๋ก ์ฌ๊ตฌ์ฑํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ค์ ์ ๋ฌํด์ผ ํ๋ค.
โข
์น ์์ฒญ๊ณผ ์๋ต ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
โฆ
ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )๊ฐ ์๋ฒ์ ํ์ด์ง(index.html)๋ฅผ ์์ฒญํ๋ค.
โฆ
์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ๋ฐ์ ํ์ผ(html)์ ์๋ตํ๋ค.
โฆ
ํด๋ผ์ด์ธํธ๋ ์์ ๋ฐ์ ํ์ผ(html) ๋ด์ฉ์ ํด์(CSS, JavaScript)ํ์ฌ, ํ๋ฉด์ ํ์ํ๋ค.
โข
์ด ๋, HTML์ ์ ์ ํ์ผ์ด๋ฏ๋ก, ์ค์๊ฐ์ผ๋ก ๋ณํ๋ ์ ๋ณด ๋ฑ์ ๊ฐ์ง๊ณ ์์ ์ ์๋ค.
โข
๋ณ๊ฒฝ๋ ์ ๋ณด๋ฅผ ํ์ํ๊ณ ์ถ๋ค๋ฉด, ๋ค์ ์์ฒญ์ ๋ณด๋ด DB์์ ๊ฐ์ง๊ณ ์จ ์ ๋ณด๋ก ์ฌ๊ตฌ์ฑ๋ HTML๋ก ํด๋ผ์ด์ธํธ์ ์ฌ์ ๋ฌํด์ผ ํ๋ค.
โข
Java๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋ธ๋ฆฟ์ ์ฅ์ ์ ์๋์ ๊ฐ๋ค.
โฆ
Java API๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
โฆ
์ด์์ฒด์ ๋ ํ๋์จ์ด์ ์ํฅ์ ๋ฐ์ง ์์ผ๋ฏ๋ก, ํ ๋ฒ ๊ฐ๋ฐ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ํ ์๋ฒ ํ๊ฒฝ์์๋ ์คํ ๊ฐ๋ฅํ๋ค.
โฆ
๋ค์ํ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ํ์ฉํ ์ ์๋ค.
โข
๋ฐ๋ฉด ์๋ธ๋ฆฟ์ ๋จ์ ์ ์๋์ ๊ฐ๋ค.
โฆ
HTML ์๋ต์ ์ํด์๋ ์ถ๋ ฅ๋ฌธ์ผ๋ก ๋ฌธ์์ด ๊ฒฐํฉ์ ์ฌ์ฉํด์ผ ํ๋ค.
โฆ
์๋ธ๋ฆฟ์ HTML์ด ํฌํจ๋ ๊ฒฝ์ฐ, ํ๋ฉด ์์ ์ด ์ด๋ ต๋ค.
โฆ
HTML ํผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ๋ถํธํ๋ค.
โฆ
๊ธฐ๋ณธ์ ์ผ๋ก ๋จ์ผ ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ํ ๊ฒฝ๋ก์ URL ์ ๊ทผ์ ํ๋์ ํด๋์ค์์ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ต๋ค.
โข
์์ ๊ฐ์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด JSP๊ฐ ์๊ฒจ๋ฌ์ผ๋ฉฐ,
HTML ๋ฌธ์ ๋ด์ Java ์ฝ๋๋ฅผ ์ฝ์
ํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ HTML ํ์ผ์ ์ง์ ์์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก๋ค.
โข
HttpServletRequest๋ HTTP ํ๋กํ ์ฝ์ ์์ฒญ ์ ๋ณด๋ฅผ ์๋ธ๋ฆฟ์ ์ ๋ฌํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
โข
HttpServletResponse๋ ์์ฒญ์ ๋ณด๋ธ ํด๋ผ์ด์ธํธ๋ก ์๋ตํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
โข
์๋ธ๋ฆฟ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์ข
๋ฃ์ ์ด๋ฅด๋ ๊ณผ์ ์ ์๋ธ๋ฆฟ ์๋ช
์ฃผ๊ธฐ๋ผ๊ณ ํ๋ค.
โข
์๋ธ๋ฆฟ ํด๋์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก doGet(), doPost()์ ๊ฐ์ HTTP ์์ฒญ ๋ฉ์๋์ ๋ฐ๋ผ ํ์ํ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด ๊ตฌํํ๋ฉฐ, ์ปจํ
์ด๋์ ์ํด ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ ๋ฑ์ด ๊ด๋ฆฌ๋๋ฏ๋ก ํ์์ ๋ฐ๋ผ ํน์ ์๋ช
์ฃผ๊ธฐ ์ด๋ฒคํธ์ ๋์ํ๋ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํ๋ค.




















