๊ด€๋ฆฌ ๋ฉ”๋‰ด

JiYoung Dev ๐Ÿ–ฅ

[JSP/Servlet] Server์™€ Servlet ๊ฐœ์š” (2023.05.09) ๋ณธ๋ฌธ

full stack/Back-End

[JSP/Servlet] Server์™€ Servlet ๊ฐœ์š” (2023.05.09)

Shinjio 2023. 5. 9. 21:07

WWW = World Wide Web

์ธํ„ฐ๋„ท์ƒ์—์„œ ํ•˜์ดํผํ…์ŠคํŠธ ๋ฐฉ์‹์œผ๋กœ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ •๋ณด๋ฅผ ์ œ๊ณต

 

internet = inter + network

์ „์„ธ๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ํ†ต์‹ ๋ง

 

<์ •๋ฆฌ ๋‚ด์šฉ>

 

WEB & HTML ์ •์˜์™€ ์—ญ์‚ฌ / HTML ํƒœ๊ทธ (2023.04.21)

๐ŸŽˆ์ธํ„ฐ๋„ท(Internet) ์—ฌ๋Ÿฌ ํ†ต์‹ ๋ง์„ ํ•˜๋‚˜๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค๋Š” ์˜๋ฏธ์ธ '์ธํ„ฐ ๋„คํŠธ์›Œํฌ(inter-network)'์˜ ๋ง์—์„œ ์‹œ์ž‘ ์ „ ์„ธ๊ณ„ ์ปดํ“จํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฑฐ๋Œ€ํ•œ ์ปดํ“จํ„ฐ ํ†ต์‹ ๋ง https://www.huffingtonpost.kr/news/article

danyoujeong.tistory.com

 

๐ŸŽˆ ๋„คํŠธ์›Œํฌ(network)๋ž€ ๋ฌด์—‡์ผ๊นŒ?

network = net + work

๊ทธ๋ฌผ์ฒ˜๋Ÿผ ์„œ๋กœ ์—ฎ์–ด์„œ ์ผํ•˜๋Š” ๊ฒƒ 

ํ†ต์‹  ์žฅ๋น„๋“ค์ด ๊ทธ๋ฌผ๋ง์ฒ˜๋Ÿผ ์—ฐ๊ฒฐ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ํ˜•ํƒœ

 

๐Ÿ“– NODE

ํ†ต์‹ ์žฅ๋น„๋Š” Node๋ผ๊ณ ๋„ ํ•จ 

node : ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ์™€ ๊ทธ ์•ˆ์— ์†ํ•œ ์žฅ๋น„ (ํ—ˆ๋ธŒ, ๊ณต์œ ๊ธฐ, ๋ผ์šฐํ„ฐ ๋“ฑ)

- HUB : ๋‹ค์ˆ˜์˜ PC์™€ ์žฅ์น˜๋“ค์„ ๋ฌถ์–ด์„œ LAN ๊ตฌ์„ฑ์‹œ ์‚ฌ์šฉํ•˜๋Š” ์žฅ์น˜

- ๋ผ์šฐํ„ฐ : ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ๊ฐ€์žฅ ์ ์ ˆํ•œ ํ†ต์‹ ํ†ต๋กœ๋ฅผ ์ด์šฉํ•ด ์ „์†กํ•ด์ฃผ๋Š” ์žฅ์น˜

- ๊ณต์œ ๊ธฐ : ํ•˜๋‚˜์˜ ์ธํ„ฐ๋„ท ๋ผ์ธ์„ ๊ณต์œ ํ•ด ๋™์‹œ์— ์ธํ„ฐ๋„ท์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์žฅ์น˜

 

๐Ÿ“– HOST

๋…ธ๋“œ ์ค‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์„ ๊ฐ–์ถ˜ ๊ธฐ๊ธฐ

ex. ํƒœ๋ธ”๋ฆฟ, ์Šค๋งˆํŠธํฐ, PC ๋“ฑ

 

โš™ HOST์˜ ์ข…๋ฅ˜โœจ

์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๋ƒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋ƒ์— ๋”ฐ๋ผ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ 

→ HOST ์‚ฌ์ด์— ์ œ๊ณต๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ธ๋ถ„ํ™”

 

1) Client : ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” host

2) Server : ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” host

 

๐Ÿ“– WEB ํ†ต์‹  ๋ฐฉ์‹

์›น์—์„œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ทœ์น™

→ HTTP(Hypertext Transfer Protocol)

    : ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ

โ€ป ํ”„๋กœํ† ์ฝœ(protocol) : ์ปดํ“จํ„ฐ๋‚˜ ์›๊ฑฐ๋ฆฌ ํ†ต์‹  ์žฅ๋น„ ์‚ฌ์ด์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์–‘์‹๊ณผ ๊ทœ์น™์˜ ์ฒด๊ณ„

 

์•„๋ž˜ 2๊ฐ€์ง€๋Š” ๊ผญ ์•Œ๋ฉด ์ข‹๋‹ค! (๋ฉด์ ‘)

 

โš™ OSI(Open System Interconnection) 7๊ณ„์ธต

๊ต์œก ๋ฐ ํ‘œ์ค€์šฉ

๋„คํŠธ์›Œํฌ์—์„œ ํ†ต์‹ ์ด ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์„ 7๋‹จ๊ณ„๋กœ ๋‚˜๋ˆˆ ๊ฒƒ 

→ ํ†ต์‹ ์ด ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ํŒŒ์•…ํ•˜๊ธฐ์— ์šฉ์ด

 

 

โš™ TCP/IP(Transmission Control Protocol/Internet Protocol) 4๊ณ„์ธต

ํ˜„์‹ค์šฉ

ํ”„๋กœํ† ์ฝœ ํ†ต์‹  ๊ณผ์ •์— ์ดˆ์ ์„ ๋งž์ถ”์–ด OSI 7๊ณ„์ธต์„ ์ข€ ๋” ๋‹จ์ˆœํ™” ์‹œํ‚จ ๊ฒƒ 

 

 

๐ŸŽˆ Client์™€ Server

ํด๋ผ์ด์–ธํŠธ pc์™€ ์„œ๋ฒ„ pc๋Š” ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹˜

์ด์šฉํ•˜๋Š” ์„œ๋น„์Šค์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๊ณ  ์„œ๋ฒ„๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Œ

 

์›น์—์„œ ํด๋ผ์ด์–ธํŠธ → ์›น ๋ธŒ๋ผ์šฐ์ € 

์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์„œ๋ฒ„์— ์š”์ฒญํ•  ์ˆ˜ ์—†์Œ. ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด์„œ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Œ 

 

์›น๋ธŒ๋ผ์šฐ์ € 
์›น ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ html, css, js, text, ์ด๋ฏธ์ง€ ๋“ฑ ์›น ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์•„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(GUI) ๊ธฐ๋ฐ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด

 

์›น์—์„œ ์„œ๋ฒ„ → ์›น ์„œ๋ฒ„

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋ฉด ์›น ์„œ๋ฒ„๋Š” HTML๊ณผ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‘๋‹ตํ•œ๋‹ค. 

 

๐ŸŽˆ Web Server

 

 

๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์›น ์„œ๋ฒ„ SW : APACHE, NGINX, IIS

IIS๋Š” ์œˆ๋„์šฐ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. ์œ„์˜ 2๊ฐ€์ง€๋Š” ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

๐Ÿ“– ์›น ์„œ๋ฒ„ โ–ถ ์ •์ ์›น์„œ๋ฒ„

HTTP ์„œ๋ฒ„(SW)๊ฐ€ ์žˆ๋Š” ์ปดํ“จํ„ฐ(HW)๋กœ ๊ตฌ์„ฑ

์„œ๋ฒ„์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํŒŒ์ผ(๋งค๋ฒˆ ๊ฐ€๊ณตX)์„ ํด๋ผ์ด์–ธํŠธ์— ์ „์†ก

→ ์‘๋‹ตํ•ด์ฃผ๋Š” ๋ฆฌ์†Œ์Šค(HTML)์ด ๊ฐ€๊ณต์ด ์•ˆ๋จ (๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Œ)

     ์ฆ‰, ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ตํ•ด์ค„ ๋•Œ ํŒŒ์ผ์€ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Œ. ๋ฐ”๋€Œ์ง€ ์•Š์Œ

→ ์ •์  ์›น์„œ๋ฒ„๋ผ๊ณ  ํ•จ

 

๐Ÿ“– ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•„์š”์„ฑ

โš™ ์ •์ ํŽ˜์ด์ง€(Static Web Page) 

์„œ๋ฒ„(์›น ์„œ๋ฒ„)์— ๋ฏธ๋ฆฌ ์ €์žฅ๋œ ํŒŒ์ผ(HTMLํŒŒ์ผ, ์ด๋ฏธ์ง€, Javascript ํŒŒ์ผ ๋“ฑ)์ด ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ๋˜๋Š” ์›นํŽ˜์ด์ง€

์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•œ ๊ณ ์ •๋œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ฒŒ ๋จ

 

์ •์  ์›นํŽ˜์ด์ง€ ์˜ˆ

 

โš™ ๋™์ ํŽ˜์ด์ง€(Dynamic Web Page)

์„œ๋ฒ„(์›น ์„œ๋ฒ„)์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ๊ฐ€๊ณต์ฒ˜๋ฆฌํ•œ ํ›„ ์ƒ์„ฑ๋˜์–ด ์ „๋‹ฌ๋˜๋Š” ์›นํŽ˜์ด์ง€

์‚ฌ์šฉ์ž๋Š” ์ƒํ™ฉ, ์‹œ๊ฐ„, ์š”์ฒญ ๋“ฑ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ์›นํŽ˜์ด์ง€๋ฅผ ๋ณด๊ฒŒ ๋จ

๋™์  ํŽ˜์ด์ง€ ์˜ˆ

 

์›น์„œ๋ฒ„๋Š” ์ •์ ํŽ˜์ด์ง€๋ฅผ ์‘๋‹ตํ•˜๋Š” ๋ฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Œ

์ •์ ์›น์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ํŽ˜์ด์ง€๋ฅผ ์‘๋‹ตํ•˜๋ ค๋ฉด? 

ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋งž๋Š” HTML ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”! >> ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด

 

HTML ๊ฐ€๊ณต์„ ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ > ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด

javascript, php, servlets&Jsp, Microsoft .NET ๋“ฑ

 

๐ŸŽˆ Servlet

- server (์„œ๋ฒ„ ์ƒ์—์„œ ์ž‘๋™ํ•˜๋Š”) + Applet (์‘์šฉ ํ”„๋กœ๊ทธ๋žจ)

- Java๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Web Application Programming ๊ธฐ์ˆ 

- Client ์š”์ฒญ์— ๋™์ ์œผ๋กœ ์ž‘๋™, ์‘๋‹ต์€ ๊ฐ€๊ณต์ด ์™„๋ฃŒ๋œ ์ •์  ๋ฌธ์„œ ํ˜•์‹์œผ๋กœ ์ œ๊ณต

 

 

๐Ÿ“– Servlet ๊ตฌ์กฐ

โš™ WAS(Web Application Server)

์›น์„œ๋ฒ„ + ์›น์ปจํ…Œ์ด๋„ˆ

๋™์ ์œผ๋กœ ์ปจํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„

ex. ํ†ฐ์บฃ

 

โš™ Web Server

์ •์ ์ธ ์ปจํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„ (๋™์ ํŽ˜์ด์ง€๋Š” ์ „๋‹ฌํ•˜์ง€ ๋ชปํ•จ)

๋™์  ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „๋‹ฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ์—ญํ• 

ํด๋ผ์ด์–ธํŠธ๋Š” ์ •์ ์›น์„œ๋ฒ„์—๋งŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ

 

โš™ Web Container

JSP์™€ Servlet์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” SW

ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋งž๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ์•„์„œ ์‹คํ–‰

 

โš™ Program(Servlet)

๋™์ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€๊ณต

 

์„œ๋ธ”๋ฆฟ ๋™์ž‘ ์ˆœ์„œ

1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์š”์ฒญ

   ์ •์  ์›น์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์Œ

2. ๋™์ ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ณ  ์‹ถ์€ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์›น์ปจํ…Œ์ด๋„ˆ๋กœ ์š”์ฒญ ์ „๋‹ฌ
   ์›น์ปจํ…Œ์ด๋„ˆ ์š”์ฒญ ๋ถ„์„ ํ›„ ์š”์ฒญ์— ๋งž๋Š” ํ”„๋กœ๊ทธ๋žจ ์„œ์นญ ํ›„ ์‹คํ–‰

3, 4. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” DB์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ด

5. ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋กœ HTML ์ƒ์„ฑ(servlet)

6. ๋งŒ๋“ค์–ด์ง„ ๋ฌธ์„œ๋Š” ์ •์  ๋ฆฌ์†Œ์Šค๊ฐ€ ๋จ > ์ •์  ์›น์„œ๋ฒ„๋กœ ์ „๋‹ฌ

7. ์ •์ ์›น์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต


ํฌ์ธํŠธ!!
- ๋™์ ์ธ ์š”์ฒญ์€ ์›น์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐ›๋Š”๋‹ค. 

- ์‹ค์ œ๋กœ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ต์„ ํ•ด์ฃผ๋Š” ์•„์ด๋Š” ์ •์  ์›น์„œ๋ฒ„์ด๋‹ค. 

 

๐Ÿ“– Servlet์˜ ํŠน์ง•

- .java ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„๋‹ค.

- Java Multi Thread๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์ž‘ํ•œ๋‹ค >> ์†๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ๋ฉด์—์„œ ํšจ์œจ์ ์ž„

- ๊ฐ์ฒด์ง€ํ–ฅ์ ์ด๋‹ค. >> ๋Œ€๊ทœ๋ชจ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•จ

- HttpServlet ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. >> HttpServlet ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์•ผ๋งŒ servlet์˜ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

โš™ ๋™์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

1) CGI(Common Gateway Interface)

 

๊ฐ™์€ ๋™์ž‘(ํ”„๋กœ์„ธ์Šค)์„ ํ•˜์ง€๋งŒ ๋‹จ์ผ ์“ฐ๋ ˆ๋“œ์ด๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์„ 2๋ฒˆ ์‹คํ–‰ํ•ด์•ผ ํ•จ.

์‚ฌ์šฉ์ž์˜ ์ˆ˜๋งŒํผ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ >> ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ๋งŽ์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ๋‹น ์ž์›์„ ๋‹ค ํ• ๋‹นํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ํฌ๊ฒŒ ๊ฐ >> CGI์˜ ๋‹จ์ 

 

2) WAS(Web Application Server)

์ž๋ฐ”๋Š” ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•จ 

์„œ๋ธ”๋ฆฟ์€ ์ž๋ฐ”๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ

 

 

ํ”„๋กœ๊ทธ๋žจ / ํ”„๋กœ์„ธ์Šค / ์Šค๋ ˆ๋“œ

ํ”„๋กœ๊ทธ๋žจ(Program)
์ปดํ“จํ„ฐ์—์„œ ์–ด๋–ค ์ž‘์—…์„ ์œ„ํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” '์ •์ ์ธ ์ƒํƒœ'์˜ ํŒŒ์ผ
ex. Windows์˜ exe ํŒŒ์ผ

ํ”„๋กœ์„ธ์Šค(Process)
ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์„œ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š” ์ƒํƒœ, ์ปดํ“จํ„ฐ์—์„œ ์—ฐ์†์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” '๋™์ ์ธ ์ƒํƒœ'์˜ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ, ์šด์˜์ฒด์ œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์˜ ํ•„์š”ํ•œ ์ž์›์„ ํ• ๋‹น๋ฐ›์€ ์ƒํƒœ

์Šค๋ ˆ๋“œ(Thread)
ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น ๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰ ๋‹จ์œ„
ํ”„๋กœ์„ธ์Šค์˜ ํŠน์ •ํ•œ ์ˆ˜ํ–‰ ๊ฒฝ๋กœ์ด์ž ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ํ๋ฆ„์˜ ๋‹จ์œ„

 


๐ŸŽˆ Eclipse 21.3 ๋ฒ„์ ผ ์„ค์น˜ + tomcat 9.0 ์„ค์น˜

- ์„ค์น˜ ๊ฒฝ๋กœ์— ํ•œ๊ธ€ ์—†์–ด์•ผ ํ•จ!

 

๐Ÿ“– Tomcat ์„ค์น˜ํ•˜๊ธฐ

์„ค์น˜ ํ›„ ์••์ถ• ํ’€๊ธฐ

 

 

bin : ํ†ฐ์บฃ ์‹คํ–‰, ์ข…๋ฃŒํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ

conf : ์„œ๋ฒ„ ์ „์ฒด ์„ค์ •ํŒŒ์ผ ํด๋” (sever.xml ๋“ฑ)

lib : ํ†ฐ์บฃ์„ ๊ตฌ๋™ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(jar)

logs : ์„œ๋ฒ„ ๋ฐœ์ƒ ์˜ˆ์™ธ์ƒํ™ฉ ๋กœ๊ทธ ์ €์žฅ

temp : ์ž„์‹œ์ €์žฅ ํด๋”

webapps : ์„œ๋ฒ„์ƒ์—์„œ ๋™์ž‘์‹œํ‚จ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ €์žฅ (java)

work : jsp ํŒŒ์ผ์„ ์„œ๋ธ”๋ฆฟ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•œ java ํŒŒ์ผ๊ณผ  ์ปดํŒŒ์ผ๋œ class ํŒŒ์ผ ์ €์žฅ

 

๐ŸŽˆ Eclipse์—์„œ Tomcat ์—ฐ๋™ํ•˜๊ธฐ

1. ์ธ์ฝ”๋”ฉ :utf-8

 

 


2. TOMCAT ์„œ๋ฒ„ ๋“ฑ๋ก

Server ํƒญ์—์„œ ์ƒˆ ์„œ๋ฒ„ ์—ฐ๊ฒฐ ๋งํฌ ํด๋ฆญ

 

New Server ์ฐฝ์—์„œ Apache- ์—ฐ๊ฒฐํ•  ์„œ๋ฒ„ ์„ ํƒ

 

Tomcat Server ์‹œ์ž‘

 

 

์˜ค๋ฅ˜๋ฐœ์ƒ

์˜ค๋ผํด port 8080์œผ๋กœ ์ค‘๋ณต๋จ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : tomcat ํฌํŠธ๋ฒˆํ˜ธ ๋ณ€๊ฒฝ (ํ›จ์”ฌ ์‰ฌ์›€)

 

 

 

Ctrl + S ์ €์žฅ

 

์„œ๋ฒ„ ์—ฐ๊ฒฐ ์„ฑ๊ณต

8081 ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ์„œ๋ฒ„ ์˜คํ”ˆ ์™„๋ฃŒ

 

3. Dynamic Web Project ์ƒ์„ฑํ•˜๊ธฐ

 

 

 

Context root : ์›น ์–ดํ”„๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„(์‹๋ณ„์ž), URL์—์„œ ์‚ฌ์šฉ

Context director : ์›น ์ฝ˜ํ…์ธ  ํŒŒ์ผ ์ €์žฅํ•  ์ž‘์—… ํด๋” ์ด๋ฆ„

 

 

 

web-inf ๊ฐ€ ์ค‘์š”

์›น์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์—ฌ๊ธฐ์— ๋„ฃ์–ด์ค˜์•ผ ํ•จ!

 

4. ์„œ๋ธ”๋ฆฟ ์ƒ์„ฑ

์ž๋ฐ” ํŒŒ์ผ์— ๋„ฃ์œผ๋ฉด ๋จ

 

 

Servlet Class ์ด๋ฆ„ ์ž‘์„ฑํ•˜๊ธฐ (์ ˆ๋Œ€ ๋ฐ”๋กœ Finish ๋ˆ„๋ฅด์ง€ ์•Š๊ธฐ!)

 

์ˆ˜ํผํด๋ž˜์Šค : ๋ถ€๋ชจํด๋ž˜์Šค

 

URL-Mapping ๊ฐ’ ์ •ํ•˜๊ธฐ

 

 

 

 

โš™ URL-Mapping ๋ฐฉ๋ฒ• 1) web.xml ํ™œ์šฉ 

 

์ฒซ ํŽ˜์ด์ง€๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ

 

 

โš™ URL-Mapping ๋ฐฉ๋ฒ• 2) annotation ํ™œ์šฉ

 

์–ด๋…ธํ…Œ์ด์…˜ 

- ์ปดํŒŒ์ผ์ด๋‚˜ ๋ฐฐํฌ, ์‹คํ–‰ํ•  ๋•Œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์„

- ํด๋ž˜์Šค๋‚˜ ํ•„๋“œ, ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ๋ถ€๊ฐ€์ •๋ณด๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Œ

- ํ”„๋กœ๊ทธ๋žจ์˜ ์˜๋ฏธ์ ์ธ ๋ถ€๋ถ„์— ์ง์ ‘ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ

 

์ƒ์† ๋ฉ”์„œ๋“œ ์„ ํƒ

 

 

์ƒ์œ„ ํด๋ž˜์Šค HttpServlet ์˜ ๊ธฐ๋Šฅ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ• ์ง€ ์„ ํƒ

 

 

์ƒ์„ฑ์ž 

servlet ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์˜๋ฏธํ•˜๋Š” ์ฃผ์š” ๋ฉ”์„œ๋“œ - ํ˜„์žฌ ์„ ํƒํ•œ ํ•ญ๋ชฉ๋“ค

 

๊ธฐํƒ€. ์›น๋ธŒ๋ผ์šฐ์ € ๋ณ€๊ฒฝ

 

์›น๋ธŒ๋ผ์šฐ์ € ์‹คํ–‰ ๋‹จ์ถ•ํ‚ค : ctrl + F11

 

 

โš™ HTTP ์ƒํƒœ์ฝ”๋“œ

์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ–ˆ์„ ๋•Œ ์ œ๋Œ€๋กœ ์„ฑ๊ณตํ•˜๋ฉด ์ƒํƒœ์ฝ”๋“œ 200

404 : ํŽ˜์ด์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ (๊ฒฝ๋กœ๊ฐ€ ์„œ๋ฒ„์ƒ์— ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ) - ์ œ๋Œ€๋กœ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ ์˜ค๋ฅ˜ ๋œจ๋Š” ๊ฒฝ์šฐ. 

์ฃผ์†Œ ํ™•์ธ ๋ถ€ํ„ฐ ์ง„ํ–‰

web.xml ์ €์žฅํ•œ๋‹ค๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ์„œ๋ฒ„์— ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ. ์ด๋•Œ๋Š” ์„œ๋ฒ„๋ฅผ restartํ•˜๋ฉด ๋จ

 

 

๐Ÿ“– ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ์ƒ๋ช…์ฃผ๊ธฐ

์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€์˜ ๊ณผ์ •

 

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//@~ : ์–ด๋…ธํ…Œ์ด์…˜(์ฃผ์„) >> ์ปดํŒŒ์ผ๋  ๋•Œ ํ•œ๋ฒˆ ํ™•์ธ์„ ํ•จ!
//@WebServlet : url-mapping์„ ํ•ด์ฃผ๋Š” ์—ญํ• 
@WebServlet("/first")
public class Ex00FirstServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
//	๊ฐ์ฒด์˜ ์ง๋ ฌํ™”(์ž๋ฐ” ๋ฐ”์ดํŠธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜)
//	์ž๋ฐ” ๋ฐ”์ดํŠธ ํ˜•ํƒœ๋ฅผ ๋‹ค์‹œ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ (์—ญ์ง๋ ฌํ™”)
//	์ง๋ ฌํ™” ์—ญ์ง๋ ฌํ™” ๊ณผ์ •์—์„œ ํด๋ž˜์Šค ์ž์ฒด๊ฐ€ ๋ณ€ํ™˜์ด ๋  ์ˆ˜ ์žˆ์Œ. ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค์— ๋ฒ„์ ผ์„ ๊ตฌํ˜„ํ•จ.
       
//	์ƒ์„ฑ์ž : ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์‚ฌ์šฉ
//	์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ”๋กœ ์„œ๋ธ”๋ฆฟ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹˜!
	// ํ˜„์žฌ๋Š” ๋‹จ์ˆœ ์ž๋ฐ” ๊ฐ์ฒด >> ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ•  ์ˆ˜ ์—†์Œ >> init ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•จ
	// ์„œ๋ธ”๋ฆฟ๊ฐ์ฒด >> ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ (์š”์ฒญ, ์‘๋‹ต)
	public Ex00FirstServlet() {
        System.out.println("์ƒ์„ฑ์ž ํ˜ธ์ถœ!");
    }

//	init ๋ฉ”์„œ๋“œ : ๊ฐ์ฒด๊ฐ€ ์„œ๋ธ”๋ฆฟ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋Š” ์—ญํ• !
//	๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…(๋ฌด๊ฑฐ์šด ์ž‘์—…) 
//	์„œ๋ฒ„๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ๋•Œ๋งˆ๋‹ค ์ด ์ž‘์—…์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋ฉด ๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ž„
//	์ตœ์ดˆ๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๊ฐ์ฒด ์ƒ์„ฑ >> init ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ›„ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋กœ ์ดˆ๊ธฐํ™”
//	๊ทธ ๋‹ค์Œ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•จ
	public void init(ServletConfig config) throws ServletException {
		System.out.println("init ํ˜ธ์ถœ!");
	}

//	destroy ๋ฉ”์„œ๋“œ : ๋งŒ๋“ค์–ด์ง„ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์†Œ๋ฉธ์‹œํ‚ด
//	์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ ๋˜๊ฑฐ๋‚˜ ์žฌ์‹œ์ž‘ ํ•  ๋•Œ ํ™œ์šฉ๋จ
//	์ด ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  ๋‚œ ๋‹ค์Œ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์‹œ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ณ  init ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•จ
	public void destroy() {
		System.out.println("destroy ํ˜ธ์ถœ!");
	}

//	service ๋ฉ”์„œ๋“œ : ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ & ์‘๋‹ตํ•˜๋Š” ๊ธฐ๋Šฅ
//	๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์€ service์— ์ž‘์„ฑ
//	**์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•  ๋•Œ ์š”์ฒญํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Œ >> http ์š”์ฒญ ๋ฉ”์„œ๋“œ
//	**๋Œ€ํ‘œ์ ์ธ ์š”์ฒญ ๋ฐฉ๋ฒ• : *GET, *POST, DELETE(์‚ญ์ œ), PATCH(์ˆ˜์ •), PUT(์ˆ˜์ •)
//	GET(์กฐํšŒ), POST(์‚ฝ์ž…) >> ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•  ๋•Œ ๋ฌด์Šจ ์š”์ฒญ์„ ํ•˜๋Š”์ง€ ์ •ํ™•ํ•˜๊ฒŒ ๊ธฐ์ž…ํ•˜์ž! 
//	RESTAPI, RESTFULL
//	1. ๋ชจ๋“  ์š”์ฒญ์€ service์—์„œ ๋ฐ›์Œ
//	2. GET/POST(์š”์ฒญ ๋ฉ”์„œ๋“œ)์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์—๋Š”
//		service๊ฐ€ doGET ํ˜น์€ doPOST ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Œ
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("service ํ˜ธ์ถœ!");
		super.service(request, response);
	}

//	http ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ GET์ผ ๊ฒฝ์šฐ ํ˜ธ์ถœ
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet ํ˜ธ์ถœ!");
	}

//	http ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ POST์ธ ๊ฒฝ์šฐ ํ˜ธ์ถœ
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost ํ˜ธ์ถœ!");
	}

}

 

 

์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค

 

 

get์ด ๊ธฐ๋ณธ๊ฐ’ >>  get ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœ๋œ ๊ฒƒ

 

์ž๋ฐ” ๊ฐ์ฒด ๋‚จ์•„์žˆ๋Š” ์ƒํƒœ์—์„œ service๋งŒ ํ˜ธ์ถœ๋จ

 

 

์„œ๋ฒ„ ์ค‘์ง€

์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋„ ์‚ฌ๋ผ์ง 

 


contextroot : path - ์šฐ๋ฆฌ๊ฐ€ ์ง€์ •ํ•œ ๊ฒฝ๋กœ๋กœ ์„œ๋ฒ„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’

ํ”„๋กœ์ ํŠธ์˜ contextroot๊ฐ€ ๊ฒน์น˜๋ฉด ์„œ๋ฒ„ ์‹คํ–‰์ด ์•ˆ๋จ >>