[Spring Framework] DispatcherServle

2025. 5. 12. 05:23ยท๐ŸŒณSpring/๐ŸŒฑSpring Framework

Servlet API

  • ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋ณธ์ ์ธ API๋กœ Servlet
  • Servlet: ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ œ๊ณต์ด ๋˜๋ฉฐ, ์ง์ ‘ Servlet์„ ๊ตฌํ˜„์„ ํ•จ. ํ†ฐ์บฃ์€ ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ด€๋ฆฌ๋ฅผ ํ•ด์คŒ.
  • ์ฆ‰, Tomcat์€ Servlet ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ณ  ํ˜ธ์ถœ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
  • ๋‹จ, Servlet ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•ด์•ผ์ง€๋งŒ ํ†ฐ์บฃ์— ํด๋ž˜์Šค๋ฅผ  ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Œ.
  • Tomcat๊ณผ Jetty ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ํ•ด๋‹น APIํ˜•ํƒœ์— ๋งž๊ฒŒ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ์Œ.

Tomcat

  • Apache Software Foundation์—์„œ ๊ฐœ๋ฐœํ•œ ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(WAS) ์ด๋‹ค.
  • ์ž๋ฐ”์— ๋‚ด์žฅ ๋˜์–ด์žˆ๋Š” Servlet API ์„œ๋ธ”๋ฆฟ ์‹คํ–‰ ํ™˜๊ฒฝ ์ŠคํŽ™์„ ๊ตฌํ˜„ํ•œ ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ์ž„.
  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(Servlet Container)๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
  • ๋ฏธ๋“ค์›จ์–ด์ด๋ฉฐ, ๋„คํŠธ์›Œํฌ๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ํŠน์ • ํฌํŠธ๋กœ ์š”์ฒญ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ. 8080
  • HttpServlet ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›์•„ ์‚ฌ์šฉ์ž ์ •์˜ Servlet์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.
  • ์‚ฌ์šฉ์ž ์ •์˜ Servlet์€ xml(ํŒŒ์ผ ์ŠคํŠธ๋ฆผ)๊ณผ ์• ๋„ˆํ…Œ์ด์…˜(๋ฆฌํ”Œ๋ ‰์…˜) ๋ฐฉ์‹์œผ๋กœ ์ฝ์–ด ํ•ด๋‹น Servlet์„ ํ˜ธ์ถœํ•จ.
  • init() ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œ ์‹คํ–‰ -> service() ์š”์ฒญ ์ฒ˜๋ฆฌ -> destroy ๊ฐ์ฒด ๋ฐ˜๋‚ฉ ( ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋˜์–ด ์ฝํž˜ )
  • ์ดˆ๊ธฐํ™” ์ฒ˜๋ฆฌ ๋ฐ˜๋‚ฉ์€ ์„œ๋ธ”๋ฆฟ ๋ผ์ดํ”„ ์‚ฌ์ดํด์ด๋ผ๊ณ  ๋ถ€๋ฆ„
  • ์ดˆ๊ธฐ ๋ฐฉ์‹์œผ๋กœ๋Š” WebServlet ๋ฐฉ์‹์ด ์žˆ์Œ
  • ์ •๋ฆฌํ•˜๋ฉด, Tomcat์€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋กœ, ์„œ๋ธ”๋ฆฟ์„ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•จ.

WebServlet ๋ฐฉ์‹

  • HttpServlet ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›์•„ Servlet ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ.
  • ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์‹์ž„.
  • ์ƒ์†์„ ๋ฐ›๊ฒŒ ๋˜๋ฉด HttpServlet์˜ ๊ธฐ๋Šฅ์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์„œ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•จ.
  • HttpServlet ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„, ๊ตฌํ˜„์„ ํ•  ์ˆ˜ ์žˆ์Œ.
  • Spring ์ „ Servlet ๋ฐฉ์‹์œผ๋กœ, Servlet ๊ฐ์ฒด๊ฐ€ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์–ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋ถˆํŽธํ•จ.

DispatcherServlet ๋ฐฉ์‹

  • ์Šคํ”„๋ง์—์„œ ๋งŒ๋“  Servlet์œผ๋กœ, ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ MVC ํŒจํ„ด์„ ์ด์šฉํ•ด ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์‘๋‹ต ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋จ.
  • ์‰ฝ๊ฒŒ๋งํ•ด, ์—”๋“œํฌ์ธํŠธ๋Š” Controller์— ๋งคํ•‘์ด ๋˜๋ฉฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋จ. Front Controller ํŒจํ„ด์„ ํ™œ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž„.
  • web.xml(ํŒŒ์ผ ์ŠคํŠธ๋ฆผ) ๋˜๋Š” ์• ๋„ˆํ…Œ์ด์…˜(๋ฆฌํ”Œ๋ ‰์…˜)์„ ํ™œ์šฉํ•ด ๊ฒฝ๋กœ์— ํ•ด๋‹นํ•˜๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•จ.
  • DispatcherServlet์€ WebServlet ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋‚˜์˜ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด๋กœ ๋™์ž‘์„ ํ•จ.
  • Tomcat์˜ ์š”์ฒญ๋งˆ๋‹ค ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ์ด ๋˜๋Š”๋ฐ, ์Šค๋ ˆ๋“œ๋Š” ํ•˜๋‚˜์˜ ์‹ฑ๊ธ€ํ†ค ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋กœ ์ด์šฉ์„ ํ•˜๊ฒŒ ๋จ.

HTTP ์š”์ฒญ ์ „์†ก ๊ณผ์ •

  • 1. ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ์—์„œ ํ…์ŠคํŠธ ์ƒ์„ฑ: URL ์ž…๋ ฅ์‹œ, ํ…์ŠคํŠธ ํ˜•์‹์˜ ์š”์ฒญ์ด ๋งŒ๋“ค์–ด์ง.
  • 2. ๋ฐ”์ดํŠธ ๋ฐฐ์—ด ๋ณ€ํ™˜: HTTP ์š”์ฒญ ํ˜•์‹์— ๋งž๊ฒŒ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜, ์ด๋•Œ ์š”์ฒญ์˜ ํ—ค๋”์™€ ๋ณธ๋ฌธ์ด ๋ฐ”์ดํŠธ๋กœ ์ธ์ฝ”๋”ฉ ๋จ.
  • 3. ์ด์ง„ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜: ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๊ธฐ ์œ„ํ•ด ์ด์ง„ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋จ.
  • 4. ๋„คํŠธ์›Œํฌ ์ „์†ก: ์ด์ง„ ๋ฐ์ดํ„ฐ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์ „๋‹ฌ์ด ๋จ. ์ด๋•Œ, ํŒจํ‚ท ๋‹จ์œ„๋กœ ๋ถ„ํ• ๋˜์–ด ์ „์†ก๋  ์ˆ˜ ์žˆ์Œ.
  • 5. ์„œ๋ฒ„ ๋„๋‹ฌ: ์š”์ฒญ์ด ์„œ๋ฒ„์— ๋„๋‹ฌํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ๋ฐ›์€ ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด๋กœ ํ•ด์„ํ•จ.
  • 6. ์„œ๋ฒ„์—์„œ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜: ์„œ๋ฒ„๋Š” ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์„ ํ…์ŠคํŠธ๋‚˜ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•จ.
  • 7. ์„œ๋ฒ„ ์ฒ˜๋ฆฌ: ํ…์ŠคํŠธ๋‚˜ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๋’ค ์ ์ ˆํ•œ ์‘๋‹ต์„ ๋ณด๋ƒ„.

3 way handshake

  • HTTP๋Š” TCP๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, HTTP ์š”์ฒญ ์ „ TCP๊ฐ€ ๋จผ์ € ๋™์ž‘์„ ํ•จ.
  • ์šด์˜์ฒด์ œ๊ฐ„ TCP 3 way handshake ๊ณผ์ •์„ ๊ฑฐ์นจ. ์‰ฝ๊ฒŒ ๋งํ•ด, ์šด์˜์ฒด์ œ๋ผ๋ฆฌ ์š”์ฒญ์„ ์ฃผ๊ณ  ๋ฐ›์•„์„œ ๊ฒ€์ฆ์„ ํ•˜๊ฒŒ ๋จ.

Tomcat HTTP ์š”์ฒญ์„ ๋ฐ›๋Š” ๊ณผ์ •

  • 5HTTP ์š”์ฒญ ์ „์†ก ๊ณผ์ •์—์„œ 5๋ฒˆ ์„œ๋ฒ„ ๋„๋‹ฌ์—์„œ ์šด์˜์ฒด์ œ๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ฐ›์•„์„œ Tomcat์ด ๋ฐ›๊ฒŒ ๋จ.
  • ์ดํ›„, Tomcat์€ HTTP ์š”์ฒญ์„ ํŒŒ์‹ฑํ•˜๊ณ , ํ•ด๋‹น ์š”์ฒญ์— ๋งž๋Š” ์ฒ˜๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

'๐ŸŒณSpring > ๐ŸŒฑSpring Framework' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring Framework] @RestController & @Controller ์ฐจ์ด  (0) 2025.05.12
[Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘ ์›๋ฆฌ  (0) 2024.11.14
[Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ & Bean ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ  (1) 2024.10.21
[Spring Framework] IoC & DI ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ  (0) 2024.10.20
[Spring Framework] Spring & Spring Framework ์ฐจ์ด  (0) 2024.10.19
'๐ŸŒณSpring/๐ŸŒฑSpring Framework' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring Framework] @RestController & @Controller ์ฐจ์ด
  • [Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ ๋™์ž‘ ์›๋ฆฌ
  • [Spring Framework] IoC ์ปจํ…Œ์ด๋„ˆ & Bean ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ
  • [Spring Framework] IoC & DI ๊ฐœ๋… ์ดํ•ด ํ•˜๊ธฐ
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (150)
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (25)
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (10)
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
      • ๐Ÿ“šComputer Science (0)
      • ๐Ÿ› ๏ธBackend (2)
      • โ˜•Java (20)
        • ๐Ÿ“Java Programming (19)
        • ๐ŸงฉJava Design Pattern (1)
      • ๐ŸŒณSpring (9)
        • ๐ŸŒฑSpring Framework (6)
        • ๐ŸŒฑSpring Security (1)
      • โšกPython (13)
      • ๐Ÿ›ข๏ธDatabase (0)
      • ๐ŸŒฟGitHub (1)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (65)
      • ์žก๋‹ด (1)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    spring
    ๋ฐฉ์†ก๋Œ€
    ์ž๋ฐ”
    ํŒŒ์ด์ฌ
    Python
    Java
    ๋‹คํ˜•์„ฑ
    ์ž…์ถœ๋ ฅ
    ์Šคํ”„๋ง
    Spring Framework
    ์ปดํŒŒ์ผ๋Ÿฌ
    ํด๋ž˜์Šค
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    ์„ธ๊ณ„ํ™”
    ํด๋ผ์šฐ๋“œ
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ๋ฐฉํ†ต๋Œ€
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Spring Framework] DispatcherServle
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”