๐Ÿ“Œ Servlet๊ณผ Spring


์„œ๋ธ”๋ฆฟ์ด๋ž€

  • ์ฒ˜์Œ ์›น ์„œ๋ฒ„๋Š” ์ •์ ์ธ ํŽ˜์ด์ง€๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ์Œ
  • ์›น์„œ๋ฒ„์— ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ™์—ฌ ๋™์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์‹œ์ž‘
    • ์„œ๋ธ”๋ฆฟ์ด ์ด ํ”„๋กœ๊ทธ๋žจ ์ค‘ ํ•˜๋‚˜
  • ์„œ๋ธ”๋ฆฟ์€ ๋™์ ์ธ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

์„œ๋ธ”๋ฆฟ์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์„œ๋ธ”๋ฆฟ์€ ์ด๋Ÿฐ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ข€ ๋” ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ(๊ธฐ๋Šฅ)์„ ์ œ๊ณต
  • ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง‘์ค‘ํ•ด์•ผํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Œ

  • service() : ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์€ doXxx()๋ฅผ ์žฌ์ •์˜ํ•ด์ฃผ์ž!
  • ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ๋งŒ ์žฌ์ •์˜ํ•ด์„œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ง€์ •

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์™€ ์„œ๋ธ”๋ฆฟ์ด ํ˜ธ์ถœ๋˜๋Š” ๊ณผ์ •

  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌํ•˜๋Š” ์นœ๊ตฌ (์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ)

์‚ฌ์šฉ์ฐจ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด

  1. Servlet Request / Servlet Response ๊ฐ์ฒด ์ƒ์„ฑ
  2. ์„ค์ • ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋งตํ•‘ํ•  Servlet์„ ํ™•์ธ
  3. ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ ์ธ์Šคํ„ด์Šค ์กด์žฌ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•˜์—ฌ ์—†์œผ๋ฉด ์ƒ์„ฑ init()
  4. Servlet Container์— ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  res, req๋ฅผ ์ธ์ž๋กœ service ์‹คํ–‰
  5. ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•œ Servlet Request / Servlet Response ๊ฐ์ฒด ์†Œ๋ช…

์„œ๋ธ”๋ฆฟ์€ ์‹ฑ๊ธ€ํ†ค์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ๋ฉธ๋˜์ง€ ์•Š๊ณ  ๊ด€๋ฆฌ๋œ๋‹ค.

์ฐธ๊ณ  - ์„ค์ • ํŒŒ์ผ

ํ•œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋„์ค‘ ๋‹ค๋ฅธ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด?

  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ
  • ์Šค๋ ˆ๋“œ๋‹น ๋‹ค๋ฅธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜
  • ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ํ•œ ์„œ๋ธ”๋ฆฟ์˜ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌ
  • ํ•˜์ง€๋งŒ ์Šค๋ ˆ๋“œ๋Š” ์ƒ์„ฑ๋น„์šฉ์ด ๋น„์‹ธ๊ณ , ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์€ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ์ผ์œผํ‚ด

์š”์ฒญ๋‹น ์„œ๋ธ”๋ฆฟ์„ ์ •ํ•ด์ฃผ๋ฉด ๋น„ํšจ์œจ์ ์ด๋‹ค.

  • ๊ด€๋ฆฌ์ ์ธ ์ธก๋ฉด์—์„œ๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ๋‹ค๋ค„์•ผํ•˜๋Š” ์–ด๋ ค์›€
  • ๊ฐœ๋ฐœ์ ์ธ ์ธก๋ฉด์—์„œ๋Š” ํ•ธ๋“ค๋Ÿฌ์˜ ๊ณตํ†ต ๋กœ์ง์ด ๋งค๋ฒˆ ์ค‘๋ณต๋จ

ํ•ธ๋“ค๋Ÿฌ์˜ ๊ณตํ†ต ๋กœ์ง ์ค‘๋ณต?

  • ์ฃผ๋ฌธ, ๊ณ„์‚ฐ, ํฌ์žฅ์ด ์ค‘๋ณต๋จ

  • ์†๋‹˜์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ • ์ค‘ ์ค‘๋ณต๋˜๋Š” ๋กœ์ง์„ ์•ž๋‹จ์— ๋งค๋‹ˆ์ €๋ฅผ ๋‘๋Š” ๊ฒƒ์ด ์ปจํŠธ๋กค๋Ÿฌ ํŒจํ„ด

Dispatcher Servlet

  • ์ด์ „์—๋Š” ์š”์ฒญ๋งˆ๋‹ค ์„œ๋ธ”๋ฆฟ์„ ์ •์˜ํ•˜๊ณ  ์ˆ˜ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋ฉด
  • ์ด์ œ๋Š” ํ•˜๋‚˜์˜ ์„œ๋ธ”๋ฆฟ๋งŒ ์ •์˜ํ•˜๊ณ  ์ด ์„œ๋ธ”๋ฆฟ์ด ๋ชจ๋“  ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ „๋žต์„ ๋”ฐ๋ฆ„

Dispatcher Servlet์ด web ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •

  • ์ „๋ฉด ๋งค๋‹ˆ์ €๊ฐ€ ๋ชจ๋“  ์š”์ฒญ์„ ์ฒ˜๋ฆฌ๋Š” ํ•˜๋˜,
  • ๊ฐ๊ฐ ๋‹ด๋‹น ์ง์›์„ ๋‘ 

  • DispatcherServlet์ด ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›์Œ
  • ํ•ธ๋“ค๋Ÿฌ ๋งตํ•‘์ด๋ผ๋Š” ์• ๊ฐ€ ๋‚ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜
  • ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ๋Š” ํ•ด๋‹น ์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ฒ˜๋ฆฌ๋กœ์ง ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• 
  • ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ Model And View ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ DispatcherServlet์— ๋„˜๊น€
  • DispatcherServlet์€ ๋ทฐ ๋ฆฌ์กธ๋ฒ„๋ฅผ ์ด์šฉํ•ด ๋ทฐ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ƒ์„ฑ
  • ์ด๋ ‡๊ฒŒ ์–ป์€ ๋ทฐ์— ์–ป์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด ์‘๋‹ต ๊ฐ์ฒด ์ƒ์„ฑ

์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ํ•ธ๋“ค๋Ÿฌ๋งŒ ์‹ ๊ฒฝ์จ์ฃผ๋ฉด ๋œ๋‹ค.
ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘๊ณผ ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ ๋ทฐ ๋ฆฌ์กธ๋ฒ„๋Š” DispatcherServlet์ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋กœ๋ถ€ํ„ฐ ์ฃผ์ž…์„ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๊ณ  ๋™์ž‘

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ

  • ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•œ๋Š ๋™์•ˆ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋“ค์„ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋Œ€์‹  ๊ด€๋ฆฌํ•˜๊ณ  ๋ณด๊ด€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐ”๊ตฌ๋‹ˆ

Servlet WebApplicationContext

  • ์›น ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ด€๋ จ ๊ฐ์ฒด๋“ค์ด ๋‹ด๊ฒจ์žˆ์Œ

Root WebApplicationContext

  • ์›น ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ด€๋ จ๋œ ๋นˆ ์™ธ์˜ ์ปดํฌ๋„ŒํŠธ๋“ค (์„œ๋น„์Šค, ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋“ฑ)

์„œ๋ธ”๋ฆฟ ์„ค์ • ํŒŒ์ผ๋งŒ ์ž˜ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ์„ค์ •๋Œ€๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๊ฐ€ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ด€๋ฆฌ๋˜๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„์—์„œ ์ฃผ์ž…๋ฐ›์•„ Dispatcher Servlet์ด ์•Œ์•„์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

์Šคํ”„๋ง์œผ๋กœ ์›น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์€

  • ์Šคํ”„๋ง mvc ์—์„œ ์ œ๊ณตํ•˜๋Š” Dispatcher Servlet๊ณผ ์›น ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ด€๋ จ ๊ตฌํ˜„์ฒด๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ๋™์‹œ์— ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ, ์ฆ‰ ์Šคํ”„๋ง IoC๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Œ
  • ์ฆ‰ ๊ฐœ๋ฐœ์ž๋Š” ํ•ธ๋“ค๋Ÿฌ์—๋งŒ(์ปจํŠธ๋กค๋Ÿฌ) ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก!

์ฐธ๊ณ  ์ž๋ฃŒ