์ปจํธ๋กค๋ฌ๋ฅผ ์ํ ์ด๋ ธํ ์ด์ ๊ฐ๋ ์ ๋ฆฌ

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์ผ๋ก ๋ฐํํ์