Backend
home

2024. 8. 2

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๋กœ, ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ์„ธ ๊ฐ€์ง€ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.
โ€ข
Java์—์„œ IP ์ฃผ์†Œ๋ฅผ java.net ํŒจํ‚ค์ง€์˜ InetAddress๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
โ€ข
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๋ฒˆ๋Œ€ ์ฝ”๋“œ : ์š”์ฒญ์€ ์ œ๋Œ€๋กœ ์™”์ง€๋งŒ ์„œ๋ฒ„์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํƒœ ์ฝ”๋“œ.
(์ฐธ๊ณ : https://http.cat/)

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 ์š”์ฒญ ๋ฉ”์†Œ๋“œ์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด ๊ตฌํ˜„ํ•˜๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ ๋“ฑ์ด ๊ด€๋ฆฌ๋˜๋ฏ€๋กœ ํ•„์š”์— ๋”ฐ๋ผ ํŠน์ • ์ƒ๋ช… ์ฃผ๊ธฐ ์ด๋ฒคํŠธ์— ๋™์ž‘ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.