Spring (65) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ JPA ํ๋ก์ ํธ Spring Quick Start(์ฑ )์ Day5 class04~05 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. ์ค์ตํ ์ฝ๋์ ๋งํฌ์ ๋๋ค. JPA๋? ORM ํ๋ ์์ํฌ๋ค์ ๋ํ ํ์คํ ์์ ์ ๊ฒฐ๊ณผ๊ฐ JPA์ด๋ค. JPA(Java Persistence API)๋ ๋ชจ๋ ORM ๊ตฌํ์ฒด(ORM ํ๋ ์์ํฌ)๋ค์ ๊ณตํต ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. JDBC๋ Oracle, Mysql, H2 ๋ฑ ํน์ DBMS์ ์ข ์๋์ง ์๋ DB ์ฐ๋ ๊ตฌํ์ ์ง์ํ๋ค. ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก JPA API(javax.persistence)๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ๋ฐ ๋น์์๋ Hibernate๋ฅผ ORM ํ๋ ์์ํฌ๋ก ์ฌ์ฉํ๋ค๊ฐ ์ค์ ์๋น์ค๊ฐ ์์๋ ๋๋ TopLink๋ก ๋ณ๊ฒฝํ ์ ์๋ค. ===== JPA ํ๋ก์ ํธ ์์ฑ๋ฐฉ๋ฒ ===== 1. maven ํ๋ก์ ํธ ์์ฑ 2... Mybatis ํ๋ก์ ํธ Spring Quick Start(์ฑ )์ Day5 class01~02 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. ์ค์ตํ ์ฝ๋์ ๋งํฌ์ ๋๋ค. Mybatis ํ๋ ์์ํฌ์ ์ค์ํ ํน์ง ํ ๋์ค์ ์๋ฐ ์ฝ๋๋ก dB ์ฐ๋์ ์ฒ๋ฆฌํ๋ค SQL ๋ช ๋ น์ด๋ฅผ java ์ฝ๋์์ ๋ถ๋ฆฌํ์ฌ XML ํ์ผ์ ๋ฐ๋ก ๊ด๋ฆฌํ๋ค. Mybatis ํ๋ ์์ํฌ๋ฅผ Data Mapper๋ผ๊ณ ๋ถ๋ฅธ๋ค. Mybatis๋ xmL ํ์ผ์ ์ ์ฅ๋ SQL ๋ช ๋ น์ด๋ฅผ ๋์ ์คํํ๊ณ ์คํ ๊ฒฐ๊ณผ๋ฅผ VO ๊ฐ์ ๊ฐ์ฒด์ ์๋์ผ๋ก ๋งคํ๊น์ง ํด์ค๋ค. ====Mybatis ํ๋ก์ ํธ ์์ฑ๋ฐฉ๋ฒ==== 1. pom.xml์ dependency ๋ฑ๋กํ๊ธฐ mysql mysql-connector-java 8.0.21 org.mybatis mybatis 3.5.6 org.apache.ibatis.. ์๋ธ๋ฆฟ ๊ฐ์ฒด์ service() ๋ฉ์๋๊ฐ ํธ์ถ๋๋ ๊ณผ์ ๐ ์๋ธ๋ฆฟ ๊ฐ์ฒด์ service() ๋ฉ์๋๊ฐ ํธ์ถ๋๋ ๊ณผ์ ๐ง ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ํด๋ผ์ด์ธํธ์ http ์์ฒญ์ด ์๋ฒ์ ์ ๋ฌ๋๋ ์๊ฐ ๐ง HttpServletRequest ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ HTTP ํ๋กํ ์ฝ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ถ์ถํ์ฌ HttpServletRequest ๊ฐ์ฒด์ ์ ์ฅํ๋ค. (doGet(), doPost(), service() ๋ฉ์๋๊ฐ ์ ์์ผ๋ก ํธ์ถ๋๋ ค๋ฉด HttpServletRequest ์ HttpServletResponse ๊ฐ์ฒด๊ฐ ํ์ํ๋ค.) ๐ง ์ด HttpServletRequest ๊ฐ์ฒด๋ฅผ service() ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ธ์๋ก ์ ๋ฌํด์ค๋ค. ๐ง ๊ทธ๋์ service() ๋ฉ์๋๋ฅผ ํตํด ๋ค์ํ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ ์ ์๋ค. ์คํ๋ง ์ปจํ ์ด๋์ ๊ด๊ณ Spring Quick Start(์ฑ )์ Day4 class03 ์ ๊ณต๋ถํ ๋ด์ฉ์ ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ์์ฃผ ์ค์ํ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค! characterEncoding org.springframework.web.filter.CharacterEncodingFilter encoding EUC-KR characterEncoding *.do contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:dispatche.. intelliJ ํฐ์บฃ ์๋ฒ๋ก ์คํํ๊ธฐ 1. add Configuration Template์์ Tomcat Server > Local Warning์ด ๋จ๋๋ฐ ์์ ๋นจ๊ฐ ์ ๊ตฌ๋ก Fix ๋ถ๋ถ์ ๋๋ฅด๋ฉด war์ war:exploded๊ฐ ๋ฌ๋ค. ๋ฐ์ ๊ฒ์ ํด๋ฆญํ๋ค. Application context์ "/๋ธ๋ผ์ฐ์ ์์ํธ์ถ๋๊ธธ์ํ๋ํ๋ก์ ํธ์ด๋ฆ" ์ ์ง์ ํ ์ ์๋ค. 2. ์ด๋ ๊ฒ ์ค์ ์ ๋ค ํ๊ณ ์ ์ฉํ๋ฉด Run button(์ด๋ก์ ์ธ๋ชจ ๋ฒํผ)์ด ํ์ฑํ๋๋ค. ๋๋ฌ๋ณด์! IntelliJ๋ก, Spring ํ๋ก์ ํธ(maven) ์์ฑํ๊ธฐ ๐ํ๋ก์ ํธ ์์ฑํ๊ธฐ 1. maven์ webapp์ผ๋ก ํ๋ก์ ํธ ์์ฑํ๋ค. maven์ ์ด์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ pom.xml ํ์ผ๊ณผ webapp ๋๋ ํ ๋ฆฌ ๋ฐ์ webapplication ์ค์ ์ ์ํ web.xml ํ์ผ์ด ์์ฑ๋๋ค. 2. pom.xml์ ์ ์ถ๊ฐํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ค. ์คํ๋ง 5.3.2๋ก ์์ฑํ๋ pom.xml์ ์ฌ๊ธฐ์ ํ์ธํ ์ ์๋ค. 16๋ฒ์งธ ์ค ์ดํ (properties)๋ก ๋ณต๋ถํด์ค๋ค. ๋ฐ์ ๋ฒํผ ํด๋ฆญํ๋ฉด reload ๋๋ค. 3. Spring MVC ํ๋ ์์ํฌ๋ฅผ ์ถ๊ฐํ๋ค. ๋ฃจํธํด๋ ์ฐํด๋ฆญ ํ > Add Frameworks Support > Spring MVC ํ๋ฉด webapp directory์ applicationContext.xml์ dispatcher-servlet... IntelliJ Add Framework Support์ Spring์ด ๋ณด์ด์ง ์์ ๋ IntelliJ Add Framework Support์ Spring์ด ๋ณด์ด์ง ์์ ๋ ์ฆ, ๋ฐ์ ๋ถ๋ถ์ด ๋ณด์ด์ง ์์ ๋๋ File > Project Structure (ctrl + alt + shift + s) ์ ๋ค์ด๊ฐ์ Facets > Spring ํด๋ฆญ > ์ญ์ ๋ฒํผ ๋๋ฅด๊ธฐ ๋ค์ Add Framework Support์ ๋ค์ด๊ฐ๋ฉด Spring ๊ด๋ จ ๋ฉ๋ด๋ค์ด ์๊ธด ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ด๋ ธํ ์ด์ ์ ์ ์ฉํ Spring MVC ๊ฒ์ํ ๊ฐ๋ฐ Spring Quick Start(์ฑ )์ Day4 class01~02 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. ์ค์ตํ ์ฝ๋์ ๋งํฌ์ ๋๋ค. 1. ์ปจํธ๋กค๋ฌ ๊ฐ์ฒด์ @Controller ๋ฑ๋กํ๊ธฐ @Controller๋ก ๋ฑ๋ก๋ ์ปดํฌ๋ํธ๊ฐ ์ค์บ๋๊ธฐ ์ํด ์คํ๋ง ์ค์ ํ์ผ(webapp/WEB-INF/presentation-layer.xml)์ ์ผ๋ก ํจํค์ง ์์น๋ฅผ ์ง์ ํด ์ฃผ์ด์ผ ํ๋ค. ์ปจํธ๋กค๋ฌ ํด๋์ค์ @Component๋ฅผ ์์ํ @Controller๋ฅผ ๋ฑ๋กํ๋ค. 2. @RequestMapping ์ฌ์ฉํ๋ฉด์ Controller ํตํฉํ๊ธฐ @RequestMapping ์คํ๋ง์์๋ @RequestMapping์ ์ด์ฉํ์ฌ HandlerMapping ์ค์ ์ ๋์ฒดํ๋ค. HandlerMapping ์ ์ด์ ์ ์คํ๋ง ์ค์ ํ์ผ์์ ์ง.. ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด: HttpSession, HttpServletRequest, ModelAndView ์คํ๋ง MVC๋ฅผ ์ ์ฉํ์ฌ Controller๋ฅผ ์์ฑํ๋ ์ค ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํด๋๋ ๊ฐ์ฒด์ ๋ํด์ ์ด์ผ๊ธฐํด๋ณด๋ ค ํ๋ค. import javax.servlet.http.HttpSession; HttpSession๋ ํด๋ผ์ด์ธํธ ๋ธ๋ผ์ฐ์ ํ๋๋น ํ๋์ฉ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋์ด ํด๋ผ์ด์ธํธ์ ์ํ์ ๋ณด๋ฅผ ์ ์งํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์ธ์ ์ ๋ง์ ์ ๋ณด๊ฐ ์ ์ฅ๋๋ฉด ๋ ์๋ก ์๋ฒ์ ๋ถ๋ด์ ์ค ์ ๋ฐ์ ์๋ค. import javax.servlet.http.HttpServletRequest; ๊ทธ๋์ ๊ฒ์ ๊ฒฐ๊ณผ๋ HttpServletRequest์ ์ ์ฅํ๋ ๊ฒ์ด ๋ง๋ค. HttpServletRequest๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ผ๋ก ์์ฑ๋๋ค๊ฐ ์๋ต๋ฉ์ธ์ง๊ฐ ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋๋ฉด ์๋์ผ๋ก ์ญ์ ๋๋ ์ผํ์ฑ ๊ฐ์ฒด์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์๋ฒ์ ๋ถ๋ด์ .. ์คํ๋ง ์ธ์ฝ๋ฉ ์ค์ ์คํ๋ง์์๋ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ๋ฅผ ์ํด CharacterEncodingFilter ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค. web.xml ํ์ผ์ CharacterEncodingFilter๋ฅผ ๋ฑ๋กํ๋ฉด ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด์ ์ผ๊ด์ ์ผ๋ก ์ธ์ฝ๋ฉ์ ์ฒ๋ฆฌํ ์ ์๋ค. [web.xml ์ค] characterEncoding org.springframework.web.filter.CharacterEncodingFilter encoding EUC-KR characterEncoding *.do ๋ ๊ณผ ๊ฑฐ์ ๋น์ทํ ํํ๋ก ๋ฑ๋กํ๋ค. WEB-INF/action-servlet.xml ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ action org.springframework.web.servlet.DispatcherServlet action *.do web.xml์์ servlet-name์ด action์ด๋ผ์ "WEB-INF/action-servlet.xml"์ด ๊ธฐ๋ณธ์ ์ธ DispatcherServlet ์ค์ ํ์ผ์ด๋ค. DispatcherServlet์ ์ค์ ํ์ผ ์ด๋ฆ์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด action org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/config/presentation-layer.xml action *.do init-param์ผ๋ก contextConfigLocation ์ง์ ํ๊ณ /WEB-INF/config/์ํ๋_ํ์ผ_์ด๋ฆ .. Spring MVC๋ฅผ ์ ์ฉํ ๊ฒ์ํ ๊ฐ๋ฐ Spring Quick Start(์ฑ )์ Day3 class05~07 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. ์ค์ตํ ์ฝ๋์ ๋งํฌ์ ๋๋ค. 1. DispatcherServlet ๋ฑ๋ก WEB-INF/web.xml ํ์ผ์ ์คํ๋ง ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ DispatcherServlet ๋ฑ๋กํ๊ธฐ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ํด๋ผ์ด์ธํธ์ ".do" ์์ฒญ์ด ์์ด์ผ DispatcherServlet ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. [web.xml] action org.springframework.web.servlet.DispatcherServlet action *.do 2. ์คํ๋ง ์ปจํ ์ด๋ ๊ตฌ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ผ๋ก DispatcherServlet ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค. DispatcherServlet์ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ฒ๋ฆฌ์ ํ์ํ HandlerMa.. EL & JSTL ๋? EL: Expression Language JSP 2.0์์ ์๋ก ์ถ๊ฐ๋ ์คํฌ๋ฆฝํธ ์ธ์ด๋ก์, ๊ธฐ์กด์ ํํ์์ ๋์ฒดํ๋ ํํ์ธ์ด์ด๋ค. ์๋ฅผ ๋ค์ด session์ ์ ์ฅ๋์ด ์๋ ์ฌ์ฉ์ ์ด๋ฆ์ JSP ํ๋ฉด์ ์ถ๋ ฅํ ๋, ๊ธฐ์กด์๋ ์๋์ ๊ฐ์ด ํํํ๋ค๋ฉด, EL์ ์ด์ฉํ๋ฉด ์๋์ ๊ฐ์ด ํํํ ์ ์๋ค. ${userName} ์๋์ ์ฝ๋์์ ๊ฐ๊ฐํ ${ } ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ์ฐ๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. [ getBoard.jsp ] ๊ธ ์์ธ Log-out ์ ๋ชฉ ์์ฑ์ ${board.writer } ๋ด์ฉ ${board.content } ๋ฑ๋ก์ผ ${board.regDate } ์กฐํ์ ${board.cnt } ๊ธ๋ฑ๋ก ๊ธ์ญ์ ๊ธ๋ชฉ๋ก JSTL: JSP Standard Tag Library JSP ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด .. MVC๋ฅผ ์ง์ ๊ตฌํํ์ฌ ๊ฒ์ํ ๊ฐ๋ฐ Spring Quick Start(์ฑ )์ Day3 class04 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. Spring MVC๋ฅผ ์ ์ฉํ๊ธฐ ์ , ๋์ผํ ๊ตฌ์กฐ๋ก ํ๋ ์์ํฌ๋ฅผ ์ง์ ๊ตฌํํด๋ณด๋ ค๊ณ ํ๋ค. MVC ํ๋ ์์ํฌ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค. ๐ง ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๋์ ๊ณผ์ ๐ง 1. ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ ๋ฒํผ์ ํด๋ฆญํ์ฌ "/login.do" ์์ฒญ์ ์ ์กํ๋ฉด DispatcherServlet์ด ์์ฒญ์ ๋ฐ๋๋ค. 2. DispatcherServlet์ HandlerMapping ๊ฐ์ฒด๋ฅผ ํตํด ๋ก๊ทธ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ LoginController๋ฅผ ๊ฒ์ํ๊ณ , 3. ๊ฒ์๋ LoginController์ handelRequest() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ก๊ทธ์ธ ๋ก์ง์ด ์ฒ๋ฆฌ๋๋ค. 4. ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ํ์ ์ด๋ํ ํ๋ฉด ์ ๋ณด๊ฐ ๋ฆฌํด๋๋ฉด 5. Dispat.. intelliJ์์ servlet ์์ฑํ๊ธฐ ๋ถ๋ช ๋๊ฐ์ ์ฌ๋์ด ์์ ๊ฒ์ด๋ค. Servlet ํ์ผ์ ์์ฑํ๋ ค๊ณ ํ๋๋ฐ ๋์ ์ป๊ณ ์ฐพ์๋ด๋ Servlet ํ์ผ์ด ์๋ค. ๊ฒ์ํด๋ณด๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ Servlet ํ์ผ์ ์ ํํด์ ๋ฐ๋ก ์์ฑํ ์ ์๋๋ฐ ๋ง์ด๋ค. ํด๋์ค๋ก ๋ง๋ค๊ณ ์ง์ ์จ์ผ ํ๋ ๋ง๋งํ ๊ฒ์ด๋ค. Servlet ์ ์์ฑํ๋ ๋ฐฉ๋ฒ 1. ์๋ฐ ํด๋์ค ๋ง๋ ๋ค. 2. ์๋ธ๋ฆฟ์ ํญ์ HttpServlet์ ์์๋ฐ๊ธฐ์ "extends HttpServlet"์ ์ง์ ์จ์ค๋ค. 3. ์ฐํด๋ฆญ > generate(์ํธ+insert) > Override Methods๋ฅผ ๋๋ฌ ์ํ๋ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ๋ฉด ๋๋ค. ์ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๋ค๋ฅธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. new > Servlet ์ค์ ์ด ์์ผ๋ ค๋ฉด ํ๋ก์ ํธ์ Facets์ web์ด ์ถ๊ฐ๋์ด ์์ด์ผ ํ๋ ๊ฒ ๊ฐ๋ค. ์ถ๊ฐ๋ก, .. [์๋ฌ] intelliJ Server ์ฌ์ฉ ์ output์ฐฝ ํ๊ธ ๊นจ์ง ์ค๋ฅ run configuration์ vm options์ -Dfile.encoding=UTF-8 ์๋์ ๊ฐ์ด ํ๊ธ์ด ์ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. forward์ redirect ์ฐจ์ด ํฌ์๋ RequestDispatcher๋ฅผ ์ด์ฉํ์ฌ ์๋ต์ผ๋ก ์ฌ์ฉํ JSPํ๋ฉด์ผ๋ก ๋๊ฒจ์, ํฌ์๋๋ ํ๋ฉด์ด ํด๋ผ์ด์ธํธ์ ์ ์ก๋๋ ๋ฐฉ์์ด๋ค. ํ๋ฐ์ ์์ฒญ๊ณผ ์๋ต์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก ์คํ ์๋๊ฐ ๋น ๋ฅด๋ค. ํด๋ผ์ด์ธํธ ๋ธ๋ผ์ฐ์ ์ URL์ด ๋ฐ๋์ง ์์ ์๋ต์ด ์ด๋์์ ๋ค์ด์๋์ง ํ์ธํ ์ ์๋ค. ๋ฆฌ๋ค์ด๋ ํธ ์์ฒญ๋ JSP์์ ์ผ๋จ ๋ธ๋ผ์ฐ์ ๋ก ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋๋ค๊ฐ ๋ค์ ์๋ฒ๋ก ์ฌ์์ฒญํ๋ ๋ฐฉ์์ด๋ค. ํฌ์๋๋ฐฉ์๊ณผ ๋ค๋ฅด๊ฒ ์ผ๋จ ์๋ต์ด ๋ธ๋ผ์ฐ์ ๋ก ๋ค์ด๊ฐ ๋ค์, ์ฌ์์ฒญํ๋ ๋ฐฉ์์ด๋ค. ์๋ต์ด ๋ค์ด์จ ํ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ URL์ด ๋ณ๊ฒฝ๋๋ค. ๋๋ฒ์ ์์ฒญ๊ณผ ์๋ต์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก ์คํ ์๋๋ ํฌ์๋ ๋ฐฉ์๋ณด๋ค ๋๋ฆฌ๋ค. Model 2 ์ํคํ ์ณ๋ก ๊ฒ์ํ ๊ฐ๋ฐ (Controller์ ๋ฑ์ฅ) Spring Quick Start(์ฑ )์ Day3 class03 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. Model 2 ์ํคํ ์ฒ ๊ตฌ์กฐ ํต์ฌ์ Controller์ ๋ฑ์ฅ์ด๋ค. ๊ธฐ์กด Model 1์์๋ JSP๊ฐ Controller์ View ๊ธฐ๋ฅ ๋ชจ๋๋ฅผ ๋ด๋นํ๋๋ฐ Model 2 JSP๋ ๋์์ธ๊ณผ ๊ฐ์ View๋ฅผ ๋ด๋นํ๊ณ , Servlet ํด๋์ค๊ฐ Controller๋ฅผ ๋ด๋นํ๋ค. MVC ์ํคํ ์ณ์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด Controller์ด๋ค. Controller๋ฅผ ์ฑ๋ฅ๊ณผ ์ ์ง๋ณด์์ ํธ์์ฑ์ ๊ณ ๋ คํ์ฌ ์ ๋ง๋๋ ๊ฒ์ด ๋ฌด์๋ณด๋ค ์ค์ํ๋ค. ์ ๋ฆฌํ๋ฉด ์ด๋ ๋ค. ์ธ์ฝ๋ฉ ์์ ์ DispatcherServlet ํด๋์ค์์ ์ผ๊ด ์ฒ๋ฆฌํ๋ฏ๋ก ์ธ์ฝ๋ฉ์ ๋ณ๊ฒฝํ ๋๋ DispatcherServlet ํด๋์ค๋ง ์์ ํ๋ฉด ๋๋ค. ๊ธ ๋ฑ๋ก, ์.. Model 1 ์ํคํ ์ณ๋ก ๊ฒ์ํ ๊ฐ๋ฐ (JSP์ JavaBeans๋ง์ ์ฌ์ฉ) Spring Quick Start(์ฑ )์ Day3 class01~02 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. ์ค์ต ์ฝ๋๋ ์ฌ๊ธฐ์ ํ์ธํ ์ ์์ต๋๋ค. Model 1 Architecture ๊ตฌ์กฐ 90๋ ๋ ๋ง๋ถํฐ 2000๋ ๋ ์ด๊น์ง ์๋ฐ ๊ธฐ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฌ์ฉ๋์๋ ์ํคํ ์ณ์ด๋ค. JSP์ JavaBeans๋ง ์ฌ์ฉํ ๋ชจ๋ธ์ด๋ค. Model: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ก์ง์ ์ ๊ณตํ๋ฉด์ DB์์ ๊ฒ์ํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ์์ ์ค์ต์์ VO(๋๋ DTO)์ DAO ํด๋์ค๊ฐ ๋ฐ๋ก Model ๊ธฐ๋ฅ์ ์๋ฐ ๊ฐ์ฒด์ด๋ค. View: JSP ์ฝ๋ ์ค์์๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ํ๋ฉด์ ์ ๊ณตํ๊ธฐ ์ํด HTML์ CSS๋ฅผ ์ฌ์ฉํ ๋ถ๋ถ์ด view ๊ธฐ๋ฅ์ ๋ด๋นํ๋ค. Controller: JSP ํ์ผ์ ์์ฑ๋ ์๋ฐ ์ฝ.. ํธ๋์ญ์ (Transaction) ์ ์ฉ 1. ํธ๋์ญ์ ๋ค์์คํ์ด์ค ๋ฑ๋ก ํธ๋์ญ์ ์ ์ํด xmlns:tx๋ฅผ ์ถ๊ฐํ๋ค. [ applicationContext.xml ] 2. ํธ๋์ญ์ ๊ด๋ฆฌ์ ๋ฑ๋ก ๋ชจ๋ Transaction ๊ด๋ฆฌ์๋ PlatformTransactionManager interface๋ฅผ ๊ตฌํํ ํด๋์ค์ด๋ค. ๋ชจ๋ Transaction ๊ด๋ฆฌ์๋ Transaction ๊ด๋ฆฌ์ ํ์ํ commit(), rollback() ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. public interface PlatformTransactionManager{ TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException; void commit(TransactionStatus.. ์ด์ 1 2 3 4 ๋ค์