ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ํจ์๋ผ๋ ์ฉ์ด๋ '๋ฉ์๋', ํนํ ์ ์ ๋ฉ์๋์ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉ๋์ง๋ง ์๋ฐ์ ํจ์๋ ์ด์ ๋ํด ์ํ์ ์ธ ํจ์์ฒ๋ผ ์ฌ์ฉ๋๋ฉฐ ๋ถ์์ฉ์ ์ผ์ผํค์ง ์๋ ํจ์๋ฅผ ์๋ฏธํ๋ค. ์๋ฐ 8์์๋ ํจ์๋ฅผ ์๋ก์ด ๊ฐ์ ํ์์ผ๋ก ์ถ๊ฐํ๋๋ฐ, ์ด๋ ๋ฉํฐ์ฝ์ด์์ ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ ํ์ฉํ ์ ์๋ ์คํธ๋ฆผ๊ณผ ์ฐ๊ณ๋ ์ ์๊ธฐ ์ํจ์ด๋ค. ํจ์๊ฐ ํ์ํ ์ด์ ๋ฅผ ์์๋ณด๊ธฐ ์ ์ ์ผ๊ธ ๊ฐ ๋๋ ์ผ๊ธ ์๋ฏผ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ฉ์ด์ ์๋ฏธ๋ฅผ ์์๋ณด์. ์ ํต์ ์ผ๋ก ๋ฏธ๊ตญ ์๋ฏผ ๊ถ๋ฆฌ์์ ์ ๋ํ ํด๋น ์ฉ์ด๋ ๋ฐ๊ฟ ์ ์๋ ๊ฐ์ ์ผ๊ธ ์๋ฏผ์ด๋ผ๊ณ ๋ถ๋ฌ์๋ค. ์๋ฅผ ๋ค์ด int๋ double ํ์์ ๊ธฐ๋ณธ๊ฐ ๋ฐ String ํ์์ ๊ฐ์ฒด๊ฐ ์ผ๊ธ ์๋ฏผ์ ํด๋นํ๋ค. ํ์ง๋ง ํด๋์ค๋ ๋ฉ์๋์ ๊ฐ์ ๊ฒฝ์ฐ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ํํํ๋ ๋ฐ ๋์์ด ๋ ์๋ ์์ง๋ง, ๊ทธ ..
์คํ๋ง MVC 2ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์คํ๋ง ํ์ ์ปจ๋ฒํฐ ๋ฌธ์๋ฅผ ์ซ์๋ก ๋ณํํ๊ฑฐ๋, ์ซ์๋ฅผ ๋ฌธ์๋ก ๋ณํํด์ผ ํ๋ ๊ฒ์ฒ๋ผ ํ์ ์ ๋ณํํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. HTTP ์ฟผ๋ฆฌ ์คํธ๋ง์ผ๋ก ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ ๋ฌธ์์์๋ ๋ถ๊ตฌํ๊ณ @RequestParam์ ์ฌ์ฉํ๋ฉด ๋ฌธ์๋ฅผ Integer ํ์ ์ผ๋ก๋ ๋ฐ์ ์ ์๋ค. ์ด๊ฒ์ ์คํ๋ง์ด ์ค๊ฐ์์ ๋ฌธ์๋ฅผ ์ซ์๋ก, ํ์ ์ ๋ณํํด ์ฃผ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฌธ์๋ฅผ ์ซ์๋ก ๋ฐ๊พธ๋ ๊ฒ ์ธ์๋ ์ซ์๋ฅผ ๋ฌธ์๋ก ๋ณ๊ฒฝํ๊ฑฐ๋ Boolean ํ์ ์ ์ซ์๋ก ๋ณ๊ฒฝํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ฐ, ์ด๋ ์คํ๋ง์ด ํ์ฅ ๊ฐ๋ฅํ ์ปจ๋ฒํฐ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ ๋ฑ๋กํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๋ก์ด ํ์ ์ ๋ง๋ค์ด์ ๋ณํํ๋ ๊ฒ ๋ํ ๊ฐ๋ฅํ๋ค. Converter ํ์ ์ปจ๋ฒํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์..
์คํ๋ง MVC 2ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. API ์์ธ ์ฒ๋ฆฌ HTML ํ์ด์ง์ ๊ฒฝ์ฐ ๊ทธ์ ๋ง๋ ์ค๋ฅ ํ์ด์ง๋ง ์์ผ๋ฉด ๋๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ง๋ง, API์ ๊ฒฝ์ฐ ๊ณ ๋ คํด์ผ ํ ์ ์ด ๋ ๋ง๋ค. ์ค๋ฅ ํ์ด์ง๋ ๋จ์ํ ํด๋ผ์ด์ธํธ์๊ฒ ์ค๋ฅ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ณ ๋์ด์ง๋ง, API๋ ๊ฐ ์ค๋ฅ ์ํฉ์ ๋ง๋ ์ค๋ฅ ์๋ต ์คํ์ ์ ํ๊ณ JSON์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด์ผ ํ๋ค. @RequestMapping ์ ๋ ธํ ์ด์ ์ produces ์ต์ ์ MediaType.APPLICATION_JSON_VALUE์ผ๋ก ์ค์ ํ๋ฉด, HTTP ํค๋์ Accept ๊ฐ์ด application/json์ผ ๋๋ง ํด๋น ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋ค. ์คํ๋ง ๋ถํธ ๊ธฐ๋ณธ ์ค๋ฅ ์ฒ๋ฆฌ ์คํ๋ง ๋ถํธ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์ค๋ฅ ๋ฐฉ์(BasicErrorController..
์คํ๋ง MVC 2ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์๋ธ๋ฆฟ ์์ธ ์ฒ๋ฆฌ - ์์ธ ์ฒ๋ฆฌ ๋ฐฉ์ ์คํ๋ง์ด ์๋ ์์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ๋ค์ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ค. 1. Exception(์์ธ) 1-1. ์๋ฐ์ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์ง์ ์คํํ๋ ๊ฒฝ์ฐ ์คํ ๋์ค์ ์์ธ๋ฅผ ์ก์ง ๋ชปํ๊ณ ์ฒ์ ์คํํ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ๋์ด์ ์์ธ๊ฐ ๋์ ธ์ง๋ฉด, ์์ธ ์ ๋ณด๋ฅผ ๋จ๊ธฐ๊ณ ํด๋น ์ฐ๋ ๋๋ ์ข ๋ฃ๋๋ค. 1-2. ์น ์ ํ๋ฆฌ์ผ์ด์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ์์ฒญ ๋ณ๋ก ๋ณ๋์ ์ฐ๋ ๋๊ฐ ํ ๋น๋๊ณ , ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์์์ ์คํ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์์ธ๋ฅผ ์ก์ง ๋ชปํ๊ณ ์๋ธ๋ฆฟ ๋ฐ์ผ๋ก๊น์ง ์์ธ๊ฐ ์ ๋ฌ๋๋ฉด WAS๊น์ง ์์ธ๊ฐ ์ ๋ฌ๋๊ณ , WAS๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ ์ค๋ฅ ํ๋ฉด์ด ๋ํ๋๋ค. ์ด ๊ฒฝ์ฐ HTTP ์ํ ์ฝ๋๊ฐ 500์ ..
์คํ๋ง MVC 2ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ๊ณตํต ๊ด์ฌ ์ฌํญ '๋ก๊ทธ์ธ ์ฒ๋ฆฌ(1) - ์ฟ ํค, ์ธ์ '์์ ์ ์ํ ์๊ตฌ์ฌํญ์ ๋ฐ๋ฅด๋ฉด ๋ก๊ทธ์ธ์ ํ ์ฌ์ฉ์๋ง ์ํ ๊ด๋ฆฌ ํ์ด์ง์ ๋ค์ด๊ฐ ์ ์์ด์ผ ํ๋ค. ํ์ง๋ง ์ํ ๊ด๋ฆฌ ํ์ด์ง์ URL์ ์ง์ ํธ์ถํ๋ฉด ๋ก๊ทธ์ธ์ ํ์ง ์์ ์ฌ์ฉ์๋ ์ ์ํ ์ ์๋ค๋ ๋ฌธ์ ์ ์ด ์กด์ฌํ๋ค. ์ํ ๊ด๋ฆฌ ์ปจํธ๋กค๋ฌ์์ ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๋ ๋ก์ง์ ์ผ์ผ์ด ์์ฑํ ์๋ ์์ง๋ง, ๋ฑ๋ก/์์ /์ญ์ /์กฐํ ๋ฑ ๋ชจ๋ ์ปจํธ๋กค๋ฌ ๋ก์ง์ ๊ณตํต์ผ๋ก ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ํ์ธํด์ผ ํ๋ฉฐ ๋ก๊ทธ์ธ๊ณผ ๊ด๋ จ๋ ๋ก์ง์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์์ฑํ ๋ชจ๋ ๋ก์ง์ ๋ค ์์ ํด์ผ ํ๋ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๋ค. ์ด๋ ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ฌ๋ฌ ๋ก์ง์์ ๊ณตํต์ผ๋ก ๊ด์ฌ์ด ์๋ ๋ถ๋ถ์ '๊ณตํต ๊ด์ฌ์ฌ'๋ผ๊ณ ํ๋๋ฐ, ํด๋น ์ํฉ์์์ ๊ณตํต ๊ด์ฌ์ฌ๋ '์ธ์ฆ'์ด..
์คํ๋ง MVC 2ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ๋ก๊ทธ์ธ ์๊ตฌ์ฌํญ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ํํธ ํ์ต์ ์๋ ์๊ตฌ์ฌํญ์ ๊ตฌํํ๋ ๊ณผ์ ์ ํตํด ์ด๋ฃจ์ด์ง๋ค. 1. ๋ก๊ทธ์ธ ์ ํ ํ๋ฉด์๋ ํ์๊ฐ์ ๊ณผ ๋ก๊ทธ์ธ ๋ฒํผ์ด ์กด์ฌํ๋ค. 2. ๋ก๊ทธ์ธ ํ ํ ํ๋ฉด์๋ ํ์ ์ด๋ฆ, ์ํ ๊ด๋ฆฌ ๋ฒํผ, ๋ก๊ทธ์์ ๋ฒํผ์ด ์กด์ฌํ๋ค. 3. ๋ก๊ทธ์ธ ์ฌ์ฉ์๋ง ์ํ์ ์ ๊ทผํ๊ณ , ๊ด๋ฆฌํ ์ ์๋ค. ๋ง์ฝ ๋ก๊ทธ์ธํ์ง ์์ ์ฌ์ฉ์๊ฐ ์ํ ๊ด๋ฆฌ์ ์ ๊ทผํ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ค. ๊ธฐ๋ณธ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ๋ก๊ทธ์ธ ์ปจํธ๋กค๋ฌ๋ ์๋น์ค ๋ก์ง์ ํธ์ถํ์ฌ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ํ ํ๋ฉด์ผ๋ก ์ด๋ํ๊ณ , ๋ก๊ทธ์ธ์ ์คํจํ๋ฉด BindingResult์ reject() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ObjectError๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ณด๋ฅผ ๋ค์ ์ ๋ ฅํ๋๋ก ๋ก๊ทธ์ธ ํผ์ ๋ทฐ ํ ํ๋ฆฟ์ผ๋ก ์ฌ์ฉํ..
์คํ๋ง MVC 2ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. Bean Validation์ด๋ ๊ฒ์ฆ ์ ๋ ธํ ์ด์ ๊ณผ ์ฌ๋ฌ ์ธํฐํ์ด์ค๋ฅผ ๋ชจ์ ๊ธฐ์ ํ์ค์ผ๋ก, ๊ฐ์ ๋น์ด์๋ ์ฌ๋ถ๋ ๋ฒ์๋ฅผ ๊ฒ์ฆํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ผ๋ฐ์ ์ธ ๋ก์ง์ ๊ฒ์ฆํ ๋ ๋ชจ๋ ํ๋ก์ ํธ์ ์ ์ฉํ ์ ์๊ฒ ๊ณตํตํํ๊ณ ํ์คํํ ๊ฒ์ด๋ค. ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ build.gradle์ ๋ค์๊ณผ ๊ฐ์ด ์์กด๊ด๊ณ๋ฅผ ์ถ๊ฐํด ์ฃผ๋ฉด ๋๋ค. implementation 'org.springframework.boot:spring-boot-starter-validation' ๊ฒ์ฆ ์ ๋ ธํ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ฉํ ์ ์๋ค. @NotBlank ๋น ๊ฐ์ธ ๊ฒฝ์ฐ ํน์ ๊ณต๋ฐฑ๋ง ์๋ ๊ฒฝ์ฐ๋ฅผ ํ์ฉํ์ง ์๋๋ค. @NotNull null์ ํ์ฉํ์ง ์๋๋ค. @Range(min = 10,..
์คํ๋ง MVC 2ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ๊ฒ์ฆ ์ปจํธ๋กค๋ฌ์ ์ค์ํ ์ญํ ์ค ํ๋๋ HTTP ์์ฒญ์ด ์ ์์ธ์ง ๊ฒ์ฆํ๋ ๊ฒ์ด๋ค. ํด๋ผ์ด์ธํธ ๊ฒ์ฆ๋ง์ผ๋ก๋ ์กฐ์์ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ทจ์ฝํ๊ณ , ์๋ฒ๋ง์ผ๋ก ๊ฒ์ฆํ๋ฉด ์ฆ๊ฐ์ ์ธ ๊ณ ๊ฐ ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋ค. ๋ฐ๋ผ์ ๋์ ์ ์ ํ ์์ด ์ฌ์ฉํ๋ ์ต์ข ์ ์ผ๋ก ์๋ฒ ๊ฒ์ฆ์ ๊ฑฐ์น๋๋ก ์ค๊ณํด์ผ ํ๋ค. ๊ฒ์ฆ ์ง์ ์ฒ๋ฆฌ ๋ก์ง 1. Map errors = new HashMap();์ ์ ์ธํ์ฌ ์ค๋ฅ๋ฅผ ๋ณด๊ดํ ๋ณ์๋ฅผ ์ง์ ํ๊ณ ๊ฒ์ฆ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ํ๋๋ช ์ key๋ก, ์ค๋ฅ ๋ฉ์์ง๋ฅผ value๋ก ์ ์ฅํ๋ค.(์ค๋ฅ ์์ธ์ด ํน์ ํ๋๊ฐ ์๋๋ผ ํ๋ ๋ฒ์๋ฅผ ๋์ด์๋ ์ค๋ฅ๋ผ๋ฉด globalError๋ฅผ key๋ก ์ฌ์ฉํ๋ค.) ์ดํ ๋ทฐ์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉ์์๊ฒ..