๐ŸŒฑ JAVA & SPRING/Spring

Spring MVC ๊ตฌ์กฐ ๋ฐ ๋™์ž‘ ์›๋ฆฌ

ming412 2023. 9. 9. 01:39

Spring MVC์˜ ํ•ต์‹ฌ์€ DispatcherServlet์ด๋‹ค.

๋”ฐ๋ผ์„œ DispatcherServlet์˜ ๋ถ€๋ชจ์ธ Servlet๋ถ€ํ„ฐ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

Servlet

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, ์„œ๋ธ”๋ฆฟ(Servlet)์ด๋ž€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์„œ๋ธ”๋ฆฟ์€ ์™œ ์ƒ๊ธฐ๊ฒŒ ๋˜์—ˆ์„๊นŒ?

 

์ •์  ํŽ˜์ด์ง€๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ดˆ๊ธฐ ์›น ์„œ๋ฒ„

์ดˆ๊ธฐ ์›น ์„œ๋ฒ„๋Š” ์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋“  ๋ณ€ํ•จ์ด ์—†๋Š” ์ •์ ์ธ ํŽ˜์ด์ง€(์ด๋ฏธ์ง€, html, css)๋งŒ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ ์ฐจ ์‚ฌ์šฉ์ž๋Š” ๋งž์ถคํ˜• ํŽ˜์ด์ง€(ex. ๋กœ๊ทธ์ธ ํ›„ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ง€)์™€ ์ƒํ˜ธ ์ž‘์šฉ์ ์ธ ์š”์†Œ(ex. ์˜จ๋ผ์ธ ์‡ผํ•‘ ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ณ  ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ–‰์œ„)๋ฅผ ์›ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ์ด๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด WAS๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.

 

์ธ์ž์˜ ๋‚ด์šฉ์— ๋งž๊ฒŒ ๋™์ ์ธ ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” Web Application Server

WAS๋Š” Web Server์™€ Web Container์˜ ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค.

WAS์˜ ๋“ฑ์žฅ ์ดํ›„ ์›น ์„œ๋ฒ„๋Š” ์ •์ ์ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๋™์ ์ธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(์›น ์ปจํ…Œ์ด๋„ˆ)๋กœ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค.

 

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ž€, ๋ง ๊ทธ๋Œ€๋กœ ์„œ๋ธ”๋ฆฟ ๊ตฌํ˜„์ฒด๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” '์ปจํ…Œ์ด๋„ˆ'์ด๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์—์„œ ์‚ดํŽด๋ณด์ž.

 

Servlet์˜ ๋™์ž‘ ๊ณผ์ •๊ณผ ์ƒ๋ช… ์ฃผ๊ธฐ

1. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„ค์ • ํŒŒ์ผ(Web.xml)์„ ์ฐธ๊ณ ํ•˜์—ฌ ์–ด๋–ค ์„œ๋ธ”๋ฆฟ์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

2. ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ ์ธ์Šคํ„ด์Šค์˜ ์กด์žฌ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•˜์—ฌ ์—†์œผ๋ฉด init() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ์„œ๋ธ”๋ฆฟ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

3. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ๊ทธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์Šค๋ ˆ๋“œ์—์„œ service() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. (์ฆ‰, ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.)

    3-1. service() ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ๋Š” HTTP ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ผ doGet(), doPost() ๋“ฑ ์‹ค์ œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ ๋ถ„๊ธฐ๋œ๋‹ค.

    3-2. ๊ฐœ๋ฐœ์ž๋Š” ์ด ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

4. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์— ๋‹ค๋ผ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” Servlet Request, Servlet Response ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

5. ์‘๋‹ต ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด destroy() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ์„œ๋ธ”๋ฆฟ ์ธ์Šคํ„ด์Šค๋ฅผ ์†Œ๋ฉธ์‹œํ‚จ๋‹ค. 

 

servlet์˜ ์„ค์ • ํŒŒ์ผ

Web.xml

์„œ๋ธ”๋ฆฟ์„ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋“ฑ๋กํ•  ์„œ๋ธ”๋ฆฟ์„ ์„ค์ • ํŒŒ์ผ์— ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค.

์„ค์ • ํŒŒ์ผ์€ ์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ƒ๊ฒผ๋Š”๋ฐ, ๊ฐ ์š”์†Œ์˜ ์˜๋ฏธ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

- <servlet> ์—˜๋ฆฌ๋จผํŠธ: ์„œ๋ธ”๋ฆฟ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค

    - ์ด ์„œ๋ธ”๋ฆฟ์˜ ์ด๋ฆ„์€ HelloServlet์ด๋‹ค.

    - ์ด ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ๊ตฌํ˜„์€ servlet ํŒจํ‚ค์ง€ ๋‚ด์— ์žˆ๋Š” HelloServlet ํด๋ž˜์Šค์ด๋‹ค.

 

- <servlet-mapping> ์—˜๋ฆฌ๋จผํŠธ: ์„œ๋ธ”๋ฆฟ๊ณผ URL ๋งคํ•‘ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

    - /hello ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ์š”์ฒญ์€

    - HelloServlet ์ด๋ผ๋Š” ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๊ฒ ๋‹ค.

 

Servlet์„ ์‚ฌ์šฉํ•œ ์ „ํ†ต์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ

๋”ฐ๋ผ์„œ ์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ ์ „ํ†ต์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š”,

url ๋งคํ•‘์„ ์œ„ํ•ด ๋ชจ๋“  ์„œ๋ธ”๋ฆฟ์„ web.xml์— ์ง์ ‘ ๋“ฑ๋กํ•ด์•ผ ํ–ˆ๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ์ ์— ์—ฌ๋Ÿฌ servlet ๊ตฌํ˜„์ฒด๊ฐ€ ์ธ์Šคํ„ด์Šคํ™” ๋˜์—ˆ๋‹ค.

(์ดํ›„ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ์ธ์Šคํ„ด์Šคํ™”๋œ ์„œ๋ธ”๋ฆฟ ์ค‘ ์ ์ ˆํ•œ ์„œ๋ธ”๋ฆฟ์ด ์„ ํƒ๋˜์–ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.)

 

ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€, ๋ชจ๋“  ์„œ๋ธ”๋ฆฟ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ์ ์— ์ธ์Šคํ„ด์Šคํ™”๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ ๋ถ€๋‹ด์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์•ž์„œ ์„œ๋ธ”๋ฆฟ์€ "์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค"๋ผ๊ณ  ํ–ˆ๋‹ค.

์ด ๋ง๋กœ ๋ฏธ๋ฃจ์–ด ๋ณด์•˜์„ ๋•Œ Spring MVC๋„ ์„œ๋ธ”๋ฆฟ์„ ์‚ฌ์šฉํ• ๊ฑฐ๋ผ๋Š” ์ง์ž‘์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด Spring MVC๋Š” Servlet์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ?

 

DispatcherServlet

Spring MVC๋Š” Dispatcher Servlet ์ด๋ผ๋Š” ์„œ๋ธ”๋ฆฟ์„ ์‚ฌ์šฉํ•œ๋‹ค.

DispatcherServlet ๊ณผ Servlet

์™ผ์ชฝ์ด Spring MVC๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” DispatcherServlet์ด๊ณ , ์˜ค๋ฅธ์ชฝ์ด Servlet์ด๋‹ค.

 

Dispatcher Servlet์€ ํด๋ผ์ด์–ธํŠธ์˜ ๋ชจ๋“  ์š”์ฒญ์„ ์ค‘์•™์—์„œ ๋‹จ์ผ ์ง„์ž…์ ์œผ๋กœ ๋ฐ›์•„๋“ค์ด๊ณ , ์š”์ฒญ์„ ์ ์ ˆํ•œ ํ•ธ๋“ค๋Ÿฌ(์ปจํŠธ๋กค๋Ÿฌ)๋กœ ๋ผ์šฐํŒ…ํ•œ๋‹ค.

(Servlet์€ ๊ฐ ์„œ๋ธ”๋ฆฟ์ด ์ž์ฒด์ ์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ง„์ž…์ ์„ ๊ฐ€์กŒ๋‹ค.)

์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ FrontController ํŒจํ„ด์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ , ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์„œ๋ธ”๋ฆฟ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

 

DispatcherServlet์˜ ๋ถ€๋ชจ

DispatcherServlet์€ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ HttpServlet์„ ์ƒ์† ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค.

์ด ๋ง์€ DispatcherServlet๋„ Servlet์ด๋ผ๋Š” ๋ง์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋“ฑ๋กํ•˜๋ ค๋ฉด ์„ค์ •ํŒŒ์ผ(Web.xml)์— ๋“ฑ๋กํ•ด์•ผํ•˜๋Š”๋ฐ, ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ž๋™์œผ๋กœ DispatcherServlet์„ ๋“ฑ๋กํ•˜๋ฉด์„œ ๋ชจ๋“  ๊ฒฝ๋กœ("/")์— ๋Œ€ํ•ด์„œ ๋งคํ•‘ํ•œ๋‹ค.

Web.xml

Spring MVC์˜ ๊ตฌ์กฐ์™€ ์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„

Spring MVC์˜ ํ•ต์‹ฌ์ธ DispatcherServlet์— ๋Œ€ํ•ด ๋จผ์ € ์‚ดํŽด๋ณด์•˜์œผ๋‹ˆ, ์ด์ œ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ์™€ ํ๋ฆ„์— ๋Œ€ํ•ด ํ•™์Šตํ•˜์ž.

1. ํด๋ผ์ด์–ธํŠธ์˜ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด DispatcherServlet์ด ์ˆ˜์‹ ํ•œ๋‹ค.

2. HandlerMapping์„ ํ†ตํ•ด ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์„ ํƒํ•œ๋‹ค.

3. ์„ ํƒํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” HandlerAdapter๋ฅผ ์„ ํƒํ•œ๋‹ค.

4. ์„ ํƒํ•œ HandlerAdapter๊ฐ€ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•ด์„œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ModelAndView ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

5. ViewResolver๋Š” ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์„ ํƒํ•œ ๋ทฐ ์ด๋ฆ„์„ ๋ฐ›์•„์„œ ์‹ค์ œ ๋ทฐ๋ฅผ ์„ ํƒํ•œ๋‹ค.

6. ์„ ํƒ๋œ ๋ทฐ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ œ๊ณตํ•œ model ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†ก๋œ๋‹ค.

 

HandlerMapping

HandlerMapping์€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ URL์„ ์–ด๋–ค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ฒ˜๋ฆฌํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

HandlerMapping์—๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ฐ๊ฐ์€ ํŠน์ •ํ•œ ๋งคํ•‘ ์ „๋žต์„ ์‚ฌ์šฉํ•˜์—ฌ URL๊ณผ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งคํ•‘ํ•œ๋‹ค.

 

1) RequestMappingHandlerMapping: Spring 3.1 ๋ฒ„์ „ ์ดํ›„๋ถ€ํ„ฐ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” HandlerMapping ์ค‘ ํ•˜๋‚˜๋กœ @RequestMapping ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•œ ๋งคํ•‘์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

2) BeanNameUrlHandlerMapping: ์Šคํ”„๋ง ๋นˆ์˜ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ URL ํŒจํ„ด์„ ๋งคํ•‘ํ•œ๋‹ค.

 

HandlerAdapter

HandlerMapping์„ ํ†ตํ•ด ์ฐพ์€ ํ•ธ๋“ค๋Ÿฌ(์ปจํŠธ๋กค๋Ÿฌ)๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•ธ๋“ค๋Ÿฌ(์ปจํŠธ๋กค๋Ÿฌ)๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ •๋ณด๋ฅผ ModelAndView๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

ViewResolver

๋ทฐ์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์‹ค์ œ ๋ทฐ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ทฐ ๋ฆฌ์กธ๋ฒ„๊ฐ€ ๊ฒฐ์ •ํ•œ ๋ทฐ ๊ฐ์ฒด๋Š” ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ „๋‹ฌํ•œ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ๋ Œ๋”๋ง๋˜์–ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋œ๋‹ค.

 

1) InternalResourceViewResolver: JSP๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ทฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์•„๋ž˜์ฒ˜๋Ÿผ application.properties์— JSP ํŒŒ์ผ์˜ ์œ„์น˜(prefix)์™€ ํ™•์žฅ์ž(suffix) ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•œ ๋’ค, jsp ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด InternalResourceViewResolver๊ฐ€ ํ•ด๋‹น ๋ทฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋ฐœ์ž์˜ ์—ญํ• ๊ณผ ์ฑ…์ž„

์•„๋ž˜ ์‚ฌ์ง„์—์„œ ์ดˆ๋ก์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•œ ๋ถ€๋ถ„์€ Spring์—์„œ ๋Œ€์‹  ๊ตฌํ˜„ํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์ด๋‹ค.

DispatcherServlet์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ์ปจํŠธ๋กค๋Ÿฌ ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ฐธ๊ณ  ์ž๋ฃŒ

https://www.youtube.com/watch?v=calGCwG_B4Y 

https://www.youtube.com/watch?v=2pBsXI01J6M 

Spring) Spring MVC ๋™์ž‘ ๊ตฌ์กฐ

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(Servlet Container)๋ž€?

[Web] Web Server์™€ WAS์˜ ์ฐจ์ด์™€ ์›น ์„œ๋น„์Šค ๊ตฌ์กฐ

[Spring] Dispatcher Servlet ์ดํ•ดํ•˜๊ธฐ

Spring MVC HandlerAdapter ๋ถ„์„ํ•˜๊ธฐ