Language & Framework/Spring2023. 3. 6. 08:44[์Šคํ”„๋ง MVC] ํŒŒ์ผ ์—…๋กœ๋“œ

์Šคํ”„๋ง MVC 2ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ ์—…๋กœ๋“œ HTML ํผ์„ ์ด์šฉํ•ด ํŒŒ์ผ์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. application/x-www-form-urlencoded ํผ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ, ํผ ํƒœ๊ทธ์— ๋ณ„๋„์˜ ์˜ต์…˜์ด ์—†์œผ๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์š”์ฒญ HTTP ๋ฉ”์‹œ์ง€ ํ—ค๋”์— Content-Type: application/x-www-form-urlencoded์ด๋ผ๋Š” ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. multipart/form-data application/x-www-form-urlencoded์€ ์ „์†ก ํ•ญ๋ชฉ์„ ๋ฌธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐ˜๋ฉด ํŒŒ์ผ์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค. ๋ฌธ์ž๋ฅผ ์ „์†กํ•˜๋Š” ์œ„์˜ ๋ฐฉ์‹์œผ๋กœ๋Š” ํŒŒ์ผ์„ ์ „์†กํ•˜๊ธฐ ์–ด๋ ต๊ณ , ๋ณดํ†ต ํผ์„ ์ „์†กํ•  ๋•Œ ํŒŒ์ผ๋งŒ ..

Language & Framework/Java2023. 3. 5. 15:14[์Šคํ„ฐ๋””][๋ชจ๋˜ ์ž๋ฐ” ์ธ ์•ก์…˜] 1.3 ์ž๋ฐ” ํ•จ์ˆ˜

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์• ์„œ ํ•จ์ˆ˜๋ผ๋Š” ์šฉ์–ด๋Š” '๋ฉ”์„œ๋“œ', ํŠนํžˆ ์ •์  ๋ฉ”์„œ๋“œ์™€ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋˜์ง€๋งŒ ์ž๋ฐ”์˜ ํ•จ์ˆ˜๋Š” ์ด์— ๋”ํ•ด ์ˆ˜ํ•™์ ์ธ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋˜๋ฉฐ ๋ถ€์ž‘์šฉ์„ ์ผ์œผํ‚ค์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ž๋ฐ” 8์—์„œ๋Š” ํ•จ์ˆ˜๋ฅผ ์ƒˆ๋กœ์šด ๊ฐ’์˜ ํ˜•์‹์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ, ์ด๋Š” ๋ฉ€ํ‹ฐ์ฝ”์–ด์—์„œ ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ณ„๋  ์ˆ˜ ์žˆ๊ธฐ ์œ„ํ•จ์ด๋‹ค. ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์— ์ผ๊ธ‰ ๊ฐ’ ๋˜๋Š” ์ผ๊ธ‰ ์‹œ๋ฏผ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์šฉ์–ด์˜ ์˜๋ฏธ๋ฅผ ์•Œ์•„๋ณด์ž. ์ „ํ†ต์ ์œผ๋กœ ๋ฏธ๊ตญ ์‹œ๋ฏผ ๊ถŒ๋ฆฌ์—์„œ ์œ ๋ž˜ํ•œ ํ•ด๋‹น ์šฉ์–ด๋Š” ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ์ผ๊ธ‰ ์‹œ๋ฏผ์ด๋ผ๊ณ  ๋ถˆ๋Ÿฌ์™”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด int๋‚˜ double ํ˜•์‹์˜ ๊ธฐ๋ณธ๊ฐ’ ๋ฐ String ํ˜•์‹์˜ ๊ฐ์ฒด๊ฐ€ ์ผ๊ธ‰ ์‹œ๋ฏผ์— ํ•ด๋‹นํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ๊ฐ’์˜ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๊ทธ ..

Language & Framework/Spring2023. 3. 5. 12:25[์Šคํ”„๋ง MVC] ์Šคํ”„๋ง ํƒ€์ž… ์ปจ๋ฒ„ํ„ฐ

์Šคํ”„๋ง MVC 2ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์Šคํ”„๋ง ํƒ€์ž… ์ปจ๋ฒ„ํ„ฐ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, ์ˆซ์ž๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. HTTP ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ฌธ์ž์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  @RequestParam์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž๋ฅผ Integer ํƒ€์ž…์œผ๋กœ๋„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ ์Šคํ”„๋ง์ด ์ค‘๊ฐ„์—์„œ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ, ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•ด ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ ์™ธ์—๋„ ์ˆซ์ž๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ Boolean ํƒ€์ž…์„ ์ˆซ์ž๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•œ๋ฐ, ์ด๋Š” ์Šคํ”„๋ง์ด ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ปจ๋ฒ„ํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ๋“ฑ๋กํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ๋งŒ๋“ค์–ด์„œ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค. Converter ํƒ€์ž… ์ปจ๋ฒ„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ..

Language & Framework/Spring2023. 3. 4. 08:48[์Šคํ”„๋ง MVC] API ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

์Šคํ”„๋ง MVC 2ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. API ์˜ˆ์™ธ ์ฒ˜๋ฆฌ HTML ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ ๊ทธ์— ๋งž๋Š” ์˜ค๋ฅ˜ ํŽ˜์ด์ง€๋งŒ ์žˆ์œผ๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, API์˜ ๊ฒฝ์šฐ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ ์ด ๋” ๋งŽ๋‹ค. ์˜ค๋ฅ˜ ํŽ˜์ด์ง€๋Š” ๋‹จ์ˆœํžˆ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์˜ค๋ฅ˜ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๊ณ  ๋์ด์ง€๋งŒ, API๋Š” ๊ฐ ์˜ค๋ฅ˜ ์ƒํ™ฉ์— ๋งž๋Š” ์˜ค๋ฅ˜ ์‘๋‹ต ์ŠคํŽ™์„ ์ •ํ•˜๊ณ  JSON์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด์•ผ ํ•œ๋‹ค. @RequestMapping ์• ๋…ธํ…Œ์ด์…˜์˜ produces ์˜ต์…˜์„ MediaType.APPLICATION_JSON_VALUE์œผ๋กœ ์„ค์ •ํ•˜๋ฉด, HTTP ํ—ค๋”์˜ Accept ๊ฐ’์ด application/json์ผ ๋•Œ๋งŒ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ ๊ธฐ๋ณธ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ์˜ค๋ฅ˜ ๋ฐฉ์‹(BasicErrorController..

Language & Framework/Spring2023. 3. 3. 22:11[์Šคํ”„๋ง MVC] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์™€ ์˜ค๋ฅ˜ ํŽ˜์ด์ง€

์Šคํ”„๋ง MVC 2ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์„œ๋ธ”๋ฆฟ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ - ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ์Šคํ”„๋ง์ด ์•„๋‹Œ ์ˆœ์ˆ˜ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค. 1. Exception(์˜ˆ์™ธ) 1-1. ์ž๋ฐ”์˜ ๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์‹คํ–‰ ๋„์ค‘์— ์˜ˆ์™ธ๋ฅผ ์žก์ง€ ๋ชปํ•˜๊ณ  ์ฒ˜์Œ ์‹คํ–‰ํ•œ ๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋ฅผ ๋„˜์–ด์„œ ์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์ง€๋ฉด, ์˜ˆ์™ธ ์ •๋ณด๋ฅผ ๋‚จ๊ธฐ๊ณ  ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ๋Š” ์ข…๋ฃŒ๋œ๋‹ค. 1-2. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‚ฌ์šฉ์ž ์š”์ฒญ ๋ณ„๋กœ ๋ณ„๋„์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํ• ๋‹น๋˜๊ณ , ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์‹คํ–‰๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์˜ˆ์™ธ๋ฅผ ์žก์ง€ ๋ชปํ•˜๊ณ  ์„œ๋ธ”๋ฆฟ ๋ฐ–์œผ๋กœ๊นŒ์ง€ ์˜ˆ์™ธ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด WAS๊นŒ์ง€ ์˜ˆ์™ธ๊ฐ€ ์ „๋‹ฌ๋˜๊ณ , WAS๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์˜ค๋ฅ˜ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ์ด ๊ฒฝ์šฐ HTTP ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ 500์„ ..

Language & Framework/Spring2023. 3. 3. 03:35[์Šคํ”„๋ง MVC] ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ(2) - ํ•„ํ„ฐ, ์ธํ„ฐ์…‰ํ„ฐ

์Šคํ”„๋ง MVC 2ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ '๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ(1) - ์ฟ ํ‚ค, ์„ธ์…˜'์—์„œ ์ •์˜ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ฅด๋ฉด ๋กœ๊ทธ์ธ์„ ํ•œ ์‚ฌ์šฉ์ž๋งŒ ์ƒํ’ˆ ๊ด€๋ฆฌ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ƒํ’ˆ ๊ด€๋ฆฌ ํŽ˜์ด์ง€์˜ URL์„ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋ฉด ๋กœ๊ทธ์ธ์„ ํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๋„ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค. ์ƒํ’ˆ ๊ด€๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๋Š” ๋กœ์ง์„ ์ผ์ผ์ด ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ/์กฐํšŒ ๋“ฑ ๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ ๋กœ์ง์— ๊ณตํ†ต์œผ๋กœ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋ฉฐ ๋กœ๊ทธ์ธ๊ณผ ๊ด€๋ จ๋œ ๋กœ์ง์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ž‘์„ฑํ•œ ๋ชจ๋“  ๋กœ์ง์„ ๋‹ค ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—ฌ๋Ÿฌ ๋กœ์ง์—์„œ ๊ณตํ†ต์œผ๋กœ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๋ถ€๋ถ„์„ '๊ณตํ†ต ๊ด€์‹ฌ์‚ฌ'๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ํ•ด๋‹น ์ƒํ™ฉ์—์„œ์˜ ๊ณตํ†ต ๊ด€์‹ฌ์‚ฌ๋Š” '์ธ์ฆ'์ด..

Language & Framework/Spring2023. 3. 2. 12:41[์Šคํ”„๋ง MVC] ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ(1) - ์ฟ ํ‚ค, ์„ธ์…˜

์Šคํ”„๋ง MVC 2ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ์š”๊ตฌ์‚ฌํ•ญ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ํŒŒํŠธ ํ•™์Šต์€ ์•„๋ž˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค. 1. ๋กœ๊ทธ์ธ ์ „ ํ™ˆ ํ™”๋ฉด์—๋Š” ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์ด ์กด์žฌํ•œ๋‹ค. 2. ๋กœ๊ทธ์ธ ํ›„ ํ™ˆ ํ™”๋ฉด์—๋Š” ํšŒ์› ์ด๋ฆ„, ์ƒํ’ˆ ๊ด€๋ฆฌ ๋ฒ„ํŠผ, ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์ด ์กด์žฌํ•œ๋‹ค. 3. ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๋งŒ ์ƒํ’ˆ์— ์ ‘๊ทผํ•˜๊ณ , ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ’ˆ ๊ด€๋ฆฌ์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ๊ธฐ๋ณธ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ๋กœ๊ทธ์ธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์„œ๋น„์Šค ๋กœ์ง์„ ํ˜ธ์ถœํ•˜์—ฌ ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜๋ฉด ํ™ˆ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๊ณ , ๋กœ๊ทธ์ธ์— ์‹คํŒจํ•˜๋ฉด BindingResult์˜ reject() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ObjectError๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •๋ณด๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅํ•˜๋„๋ก ๋กœ๊ทธ์ธ ํผ์„ ๋ทฐ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์‚ฌ์šฉํ•˜..

Language & Framework/Spring2023. 2. 21. 19:11[์Šคํ”„๋ง MVC] ๊ฒ€์ฆ(2) - Bean Validation

์Šคํ”„๋ง MVC 2ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. Bean Validation์ด๋ž€ ๊ฒ€์ฆ ์• ๋…ธํ…Œ์ด์…˜๊ณผ ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ชจ์€ ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ, ๊ฐ’์˜ ๋น„์–ด์žˆ๋Š” ์—ฌ๋ถ€๋‚˜ ๋ฒ”์œ„๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์ผ๋ฐ˜์ ์ธ ๋กœ์ง์„ ๊ฒ€์ฆํ•  ๋•Œ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ณตํ†ตํ™”ํ•˜๊ณ  ํ‘œ์ค€ํ™”ํ•œ ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” build.gradle์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜์กด๊ด€๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค. implementation 'org.springframework.boot:spring-boot-starter-validation' ๊ฒ€์ฆ ์• ๋…ธํ…Œ์ด์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. @NotBlank ๋นˆ ๊ฐ’์ธ ๊ฒฝ์šฐ ํ˜น์€ ๊ณต๋ฐฑ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. @NotNull null์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. @Range(min = 10,..

image