๐Ÿ’ปStudy/Spring

์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜ ๊ฐœ๋… ์ •๋ฆฌ

์œผ๋…ธ๋‹ˆ 2021. 3. 3. 15:16

 

xml์œผ๋กœ ์„ค์ •ํ–ˆ์„ ๋•Œ๋Š” "/index"๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด xml์— ์„ค์ •๋œ url๊ณผ ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค bean ์ •๋ณด๋Œ€๋กœ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„ ๋งคํ•‘๋œ๋‹ค. Controller๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ๊ฐ๊ฐ์˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” handelRequest ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๊ณ  ModelAndView ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

 

 

 

์‚ฌ์šฉ์ž์˜ ์š”์ฒญ("/index")์— ๋”ฐ๋ผ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋งคํ•‘๋˜๊ธฐ ์ „์— ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ๊ฒƒ์ด ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ(์„œ๋ธ”๋ฆฟ)์ด๋‹ค. ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” MVC ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ๊ณผ ์ปจํŠธ๋กค๋Ÿฌ ์‚ฌ์ด ์กฐ์œจ์ž ์—ญํ• ์„ ํ•œ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ „๋ถ€ ๋ฐ›์€ ํ›„ ์ ์ ˆํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

 

 

 

xml ๋ฐฉ์‹์„ ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด ๊ฐ๊ฐ์˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ Controller ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ view ํŽ˜์ด์ง€๋ฅผ ํฌ๊ด„ํ•˜๋Š” ํด๋”์˜ ์˜๋ฏธ๋กœ ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์•ˆ์—์„œ ๋ฉ”์†Œ๋“œ ๋‹จ์œ„๋กœ ํ–‰๋™์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค์—๋Š” @Controller ์–ด๋…ธํ…Œ์ด์…˜์„ ๋‹ฌ์•„ ์ปจํŠธ๋กค๋Ÿฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ์„ ์•Œ๋ฆฌ๊ณ , ๊ฐ๊ฐ์˜ ๋ฉ”์†Œ๋“œ์—๋Š” @RequestMapping ์–ด๋…ธํ…Œ์ด์…˜์„ ๋‹ฌ์•„ url ๋งคํ•‘์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

@Controller ์–ด๋…ธํ…Œ์ด์…˜์„ ์ฐพ์•„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ xml์— component-scan ํƒœ๊ทธ๋ฅผ ๋ถ™์ธ๋‹ค.

annotation-driven ํƒœ๊ทธ๋Š” @RequestMapping ์–ด๋…ธํ…Œ์ด์…˜์„ ์ฐพ์•„ url ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

 

 

 

 

๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์€ ๋งคํ•‘๊ณผ ์ƒ๊ด€์ด ์—†๋‹ค. ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์˜ค๋ฉด @RequestMapping ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ฐพ์•„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งคํ•‘ ๊ฒฝ๋กœ์™€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์„ ๋งž์ถฐ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

 

 

 

ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ํƒ€์ž… ์—ญ์‹œ ์ƒ๊ด€์—†๋‹ค. void, String.. ์ „๋ถ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ void์ธ ๊ฒฝ์šฐ๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋‹ค. "/hello"๋ผ๋Š” ์š”์ฒญ์ด ์™”์„ ๋•Œ ๋ทฐ ๋ฆฌ์กธ๋ฒ„์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋Œ๋ ค์ค„ "/WEB-INF/view/hello.jsp" ํŒŒ์ผ์„ ์ฐพ๊ฒŒ ๋˜๋Š”๋ฐ, ํ•ด๋‹น ํŒŒ์ผ์ด ์—†์œผ๋ฉด 404 ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค. ์ฝ˜์†”์— ์ฐ์€ sysout์€ ์ •์ƒ์ ์œผ๋กœ ์ฐํžˆ๋ฏ€๋กœ ์‹คํ–‰์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ํŒŒ์ผ ์œ ๋ฌด์— ๋”ฐ๋ผ 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

๋งŒ์•ฝ ๋ทฐ ๋ฆฌ์กธ๋ฒ„๊ฐ€ ์—†๋‹ค๋ฉด "/index"๋ผ๋Š” ์š”์ฒญ์— ์ˆ˜๋ฐ˜ํ•˜๋Š” ๋ทฐ ์ •๋ณด๊ฐ€ ์•„์˜ˆ ์—†๊ธฐ ๋•Œ๋ฌธ์— 500 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ์—ญ์‹œ sysout ์ถœ๋ ฅ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๋ทฐ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์ง€ ๋ชปํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

 

ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋ผ๋Š” ์„œ๋ธ”๋ฆฟ์ด ์ ๋‹นํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ๋Œ๋ ค์ค„ ๊ฐ’์ด ์—†์–ด์„œ 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์žˆ์œผ๋‚˜ void์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด ์—†์„ ๋•Œ๋„ 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

=> ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์—†์–ด๋„, ๋ฐ˜ํ™˜ํ•  view ํŽ˜์ด์ง€๊ฐ€ ์—†์–ด๋„ 404 ๋ฐœ์ƒ => String์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜์ž