[2025-02-21] Servlet vs Spring

์ด๊ทœ์ •ยท2025๋…„ 2์›” 21์ผ

์ฐธ๊ณ 

๐Ÿ’ก Youtube : [10๋ถ„ ํ…Œ์ฝ”ํ†ก] ํƒ€๋ฏธ์˜ Servlet vs Spring


์›น์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋™์ž‘๋ฐฉ์‹

  • ์ฒ˜์Œ์—” ํด๋ผ์ด์–ธํŠธ์—์„œ ์˜จ ์š”์ฒญ์„ ์›น์„œ๋ฒ„(NginX ๋“ฑ๋“ฑ)์—์„œ ์ •์  ๋ฐ์ดํ„ฐ๋กœ๋งŒ ์ฒ˜๋ฆฌํ•จ. โ†’ ๋™์  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•˜๊ณ ์‹ถ์–ด์ง!
  • CGI : ๋™์  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค(๊ทœ์•ฝ / ๊ตฌํ˜„์ฒด) โ†’ ์š”์ฒญ์ด ์˜ค๋ฉด CGI ๊ตฌํ˜„์ฒด(PHP ๋“ฑ๋“ฑ)์— ์ €์žฅ๋œ ๋™์  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธด ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
  • ๋ฌธ์ œ์ 
    1. ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ํ”„๋กœ์„ธ์Šค(๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ธ์Šคํ„ด์Šค)๋ฅผ ๋งŒ๋“ค์–ด์„œ ์˜ค๋ž˜ ๊ฑธ๋ฆผ โ†’ ์“ฐ๋ ˆ๋“œ(ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด ๋™์ž‘ ํ๋ฆ„) ๋“ฑ์žฅ!
    2. ๊ฐ™์€ ๊ตฌํ˜„์ฒด๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์“ฐ๋ ˆ๋“œ์— ๋”ฐ๋ผ ํ•˜๋‚˜์”ฉ ๊ตฌํ˜„์ฒด๊ฐ€ ์ƒ๊น€ โ†’ Singleton ๋ฐฉ์‹์˜ ํ˜„๋Œ€์ ์ธ Servlet ๊ตฌํ˜„์ฒด(์ธํ„ฐํŽ˜์ด์Šค) ๋“ฑ์žฅ! (์ •์˜๋œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์—ญํ• )
  • Servlet ์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ
    • init : Servlet ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    • service : ์›น ์ปจํ…Œ์ด๋„ˆ(Tomcat)์˜ HTTP Method(GET, POST, PUT, DELETE) ํ˜ธ์ถœ (๋ฐฑ์—”๋“œ๋Š” ํ•ด๋‹น ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ!)
    • destroy : Servlet ์ธ์Šคํ„ด์Šค ์‚ฌ๋ผ์ง

์•„๋ž˜์˜ ๋ชจ๋“  ๊ณผ์ •์ด Spring์˜ Dispatcher Servlet์„ ์ค‘์‹ฌ์œผ๋กœ ์ด๋ฃจ์–ด์ง!

  1. ํด๋ผ์ด์–ธํŠธ โ†’ ์›น์„œ๋ฒ„ โ†’ WAS(Tomcat) โ†’ Servlet Container ์ˆœ์œผ๋กœ ์š”์ฒญ์ด ์ „๋‹ฌ๋จ!
  2. Servlet ์ปจํ…Œ์ด๋„ˆ์—์„œ Dispatcher Servlet ์œผ๋กœ ์š”์ฒญ ์ „๋‹ฌ
  3. Dispatcher Servlet์€ ์„ค์ •๋œ Web.xml์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์ฒญ์— ๋”ฐ๋ฅธ ์ ํ•ฉํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ๋Š” Handler Mapping ์„ ์ˆ˜ํ–‰
    • BeanNameHandlerMapping : Bean ์ด๋ฆ„๊ณผ Url ์„ Mapping ํ•˜๋Š” ๋ฐฉ์‹
    • DefaultAnnotationHandlerMapping : Annotation(@) ์œผ๋กœ Url ๊ณผ Mapping ํ•˜๋Š” ๋ฐฉ์‹
  4. Handler Adapter๋Š” HandlerMapping ์—์„œ ์ฐพ์€ Handler(Controller)์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ (๋ชจ๋ธ(data) ๊ณผ View(String) ๋ฅผ ๋ฐ˜ํ™˜)
  5. View Resolver ๊ฐ€ View ์ด๋ฆ„์œผ๋กœ View ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
  6. View ์—์„œ๋Š”, 4๋ฒˆ์—์„œ ๋งŒ๋“  View ๊ฐ์ฒด์— Handler Adapter์—์„œ ๋ฐ˜ํ™˜ํ•œ ๋ชจ๋ธ(data)์„ ์‚ฝ์ž…
  7. Dispatcher Servlet ์—์„œ Servlet container ๋กœ ์‘๋‹ต!
  8. ๊ฒฐํ•ฉ์€ ๋ถ„ํ•ด์˜ ์—ญ์ˆœ!
profile
๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅ์ค‘์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€