๋ฐ˜์‘ํ˜•

๐ŸŒฟ Spring 28

Spring Validation ์ •๋ฆฌ

๋ชฉ์ฐจ Validation : ๋ฐ์ดํ„ฐ ๊ฒ€์‚ฌ Validation์ด๋ž€ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ์œ ํšจํ•œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์œ ํšจ์„ฑ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๊ฑฐ๋‚˜, DB์— ์ €์žฅ๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. ์˜์กด์„ฑ ์„ค์ • spring-boot-starter-validation์€ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ hibernate validator๋ฅผ ํฌํ•จํ•˜๊ณ ์žˆ๋‹ค Maven์ด์šฉ ์‹œ pom.xml org.springframework.boot spring-boot-starter-validation Gradle์ด์šฉ ์‹œ build.gradle implementation 'org.springframework.boot:spring-boot-starter-validation' Controller์— ๊ฒ€์ฆ๋กœ์ง ์ง์ ‘ ๊ตฌํ˜„ Map errors ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ..

๐ŸŒฟ Spring 2021.12.08

์Šคํ”„๋งMVC ๊ธฐ๋ณธ๊ธฐ๋Šฅ

๋ชฉ์ฐจ WelcomeํŽ˜์ด์ง€ /resources/static ์— index.html์„ ์ƒ์„ฑํ•˜๋ฉด ์Šคํ”„๋ง๋ถ€ํŠธ๊ฐ€ welcomeํŽ˜์ด์ง€๋กœ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค. Logging ๋กœ๊น… ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ์ž๋™์œผ๋กœ spring-boot-starter-logging ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , spring-boot-starter-logging๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” SLF4J, Logback ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. SLF4J๋Š” ์ˆ˜๋งŽ์€ ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ œ๊ณตํ•˜๊ณ  Logback์€ ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌํ˜„์ฒด์ด๋‹ค. System.out.println์€ ์ฝ˜์†”์—๋งŒ ์ถœ๋ ฅ๋˜์ง€๋งŒ ๋กœ๊ทธ๋Š” ์ฝ˜์†”๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ, ๋„คํŠธ์›Œํฌ ๋“ฑ์˜ ๋ณ„๋„์˜ ์œ„์น˜์— ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์–‘์ด ๋งŽ์•„์ง€๋ฉด ํŠน์ •๊ธฐ์ค€์— ๋”ฐ๋ผ ๋กœ๊ทธ๋ฅผ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ๊ณ , ์„ฑ๋Šฅ๋„ System.out ๋ณด๋‹ค ์ข‹๋‹ค. impor..

๐ŸŒฟ Spring 2021.12.03

์Šคํ”„๋ง MVC ๊ตฌ์กฐ, DispatcherServlet, @RequestMapping..

๋ชฉ์ฐจ ์Šคํ”„๋งMVC ์ด์ „์—์„œ์˜ ๊ตฌํ˜„ ์—ญํ•  ์Šคํ”„๋ง์—์„œ์˜ ๊ตฌํ˜„ FrontController handlerMappingMap์„ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. handlerAdapter๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. HttpServlet์„ ์ƒ์†๋ฐ›์•„ service๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•œ๋‹ค handlerMappingMap์—์„œ ์ฐพ์€ ๊ฐ Handler๋ฅผ Adapter๋กœ ๋„˜๊ธฐ๊ณ  ๋ฐ˜ํ™˜๋ฐ›์€ ModelView์—์„œ viewName์„ getํ•ด์„œ MyView๊ฐ์ฒด ์ƒ์„ฑํ•œ๋‹ค MyView๊ฐ์ฒด์˜ render๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•œ๋‹ค. DispatcherServlet handlerMappingMap ์ฃผ์†Œ์™€ Handler(=๊ฐ Controller)๋“ค์„ ๋งตํ•‘ํ•จ (MemberFormControllerV3, MemberSaveControllerV4...) Han..

๐ŸŒฟ Spring 2021.12.01

FrontController, View, Model, Adapter, Handler

๋ชฉ์ฐจ ๊ธฐ์กด์˜ MVC Servlet ์ด์ „์˜ ์ฝ”๋“œ์—์„œ๋Š” ๊ณตํ†ต๋ถ€๋ถ„์˜ ์ค‘๋ณต์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ( ๋ถ„ํ™์ƒ‰์€ ์ฃผ์†Œ๋ฅผ ๋งตํ•‘ํ•˜๋Š” ๊ณตํ†ต๋ถ€๋ถ„, ๋…ธ๋ž€์ƒ‰์€ model์— ๊ฐ’์„ ๋‹ด๋Š” ๊ณตํ†ต๋ถ€๋ถ„, ์ดˆ๋ก์ƒ‰์€ view๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณตํ†ต๋ถ€๋ถ„์ด๋‹ค. ) ๊ณตํ†ต๋ถ€๋ถ„์„ Front Controller๋กœ ๋นผ๋‚ด๊ณ , ๊ฐ ์ฃผ์†Œ์— ๋”ฐ๋ผ์„œ ๊ฐ๊ฐ์˜ Controller์— ์š”์ฒญ์„ ์ „๋‹ฌํ•ด์ฃผ์ž. ์ž˜ ๋ณด๋ฉด ๊ณตํ†ต๋ถ€๋ถ„๋งŒ HttpServlet์ด ํ•„์š”ํ•˜๊ณ , ๋‚˜๋จธ์ง€๋ถ€๋ถ„์€ ์ž๋ฐ” ์ฝ”๋“œ๋กœ๋งŒ ์ž‘์„ฑํ•ด๋„ ๋ฌธ์ œ์—†๋‹ค. -> ๊ณตํ†ต๋ถ€๋ถ„ Front Controller๋Š” Servlet์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  -> ๊ฐ๊ฐ์˜ Controller๋Š” ์ž๋ฐ”๋กœ ์ž‘์„ฑํ•œ๋‹ค. FrontController ํ”„๋ก ํŠธ์ปจํŠธ๋กค๋Ÿฌ ๋„์ž… ์ฃผ์†Œ๋งตํ•‘ ๊ณตํ†ต๋ถ€๋ถ„์œผ๋กœ ๋นผ๋ฉด์„œ ๋ฐ”๋€ ์  - ๊ธฐ์กด ๊ฐ๊ฐ ์„œ๋ธ”๋ฆฟ์ฝ”๋“œ์˜ @WebServlet, extends HttpS..

๐ŸŒฟ Spring 2021.12.01

์„œ๋ธ”๋ฆฟ, JSP, MVCํŒจํ„ด

๋ชฉ์ฐจ ์„œ๋ธ”๋ฆฟ VS JSP ์„œ๋ธ”๋ฆฟ์˜ ๋ถˆํŽธํ•จ : HTML ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด w.write("")...์ฒ˜๋Ÿผ ๋ฉ”์„œ๋“œ ์•ˆ์— ์ผ์ผ์ด ๋ฌธ์ž๋กœ ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. JSP์˜ ๋ถˆํŽธํ•จ : JSPํŒŒ์ผ ํ•˜๋‚˜์— ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง, ํ™”๋ฉดํ‘œํ˜„ ๋“ฑ์˜ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์ด ์ฃผ์–ด์ง„๋‹ค. -> ๋‚˜์ค‘์— ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์„œ๋ธ”๋ฆฟ ์ฒ˜๋Ÿผ ๋‹ค๋ฅธ๊ณณ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ , JSP๋Š” ๋ชฉ์ ์— ๋งž๊ฒŒ HTML๋กœ ํ™”๋ฉด(View)์„ ๊ทธ๋ฆฌ๋Š” ์ผ์— ์ง‘์ค‘ํ•˜๋„๋ก ํ•˜์ž. => MVC ํŒจํ„ด ์ถœํ˜„ MVC ํŒจํ„ด ์ด์ „์˜ ๋ฌธ์ œ์ ๋“ค 1. 1๊ฐœ์˜ JSPํŒŒ์ผ์— ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง, View ํ‘œํ˜„, DB์—ฐ๊ฒฐ.. ๋“ฑ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์ด ์กด์žฌํ–ˆ๋‹ค. 2. UI์™€ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์˜ ์—ฐ๊ด€์„ฑ์ด ์žˆ์„๊นŒ?? ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ๋Š” ์„œ๋กœ ์—ฐ๊ด€์„ฑ๋„ ์—†๊ณ  UI๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹คํ•ด์„œ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒฝ์šฐ๋„ ์—†๋‹ค. => ๋‘˜ ..

๐ŸŒฟ Spring 2021.11.25

์„œ๋ธ”๋ฆฟ, HTTP Request, HTTP Response, ObjectMapper

๋ชฉ์ฐจ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋Š” HttpServlet์„ ๋ฐ˜๋“œ์‹œ ์ƒ์†๋ฐ›์•„์•ผํ•˜๋ฉฐ @WebServlet ์• ๋…ธํ…Œ์ด์…˜์„ ์ž‘์„ฑํ•ด์„œ ์Šคํ”„๋ง์—๊ฒŒ ์ด ํด๋ž˜์Šค๊ฐ€ ์›น ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ServletApplication์˜ @ComponentScan์ด HelloServletํด๋ž˜์Šค๋ฅผ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. HttpServlet ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ž๋™์œผ๋กœ service๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.Serv..

๐ŸŒฟ Spring 2021.11.24

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ดํ•ด

๋ชฉ์ฐจ ์›น ์„œ๋ฒ„ Web Server : ์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ •์  ๋ฆฌ์†Œ์Šค(html, css, js, ์ด๋ฏธ์ง€ ๋“ฑ๋“ฑ) ๋“ค์„ ์ œ๊ณตํ•ด์ค€๋‹ค. EX) NGINX, APACHE ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ Web Application Server : ์ •์  + ๋™์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋™์  ๋ฆฌ์†Œ์Šค(๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง, JSP, ์Šคํ”„๋ง MVC ๋“ฑ๋“ฑ)์„ ์ œ๊ณตํ•ด์ค€๋‹ค. ์›น ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ๋‹ค(์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต) EX) TOMCAT ... => WAS๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๋” ํŠนํ™”๋˜์–ด์žˆ๋‹ค. ์›น ์‹œ์Šคํ…œ ๊ตฌ์„ฑ WEB, WAS, DB WAS๋กœ๋งŒ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ โญ "์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ํ˜„์žฌ ์ ‘๊ทผ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค" ๋ผ๋Š” ์ •์ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋ คํ•ด๋„ WAS์— ์žฅ์• ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ์ •์ ํŽ˜์ด์ง€ ์กฐ์ฐจ ๋…ธ์ถœ ๋ถˆ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. โญ ์ •์ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ธฐ..

๐ŸŒฟ Spring 2021.11.23
๋ฐ˜์‘ํ˜•