λΆλ₯ μ 체보기 (135) μΈλ€μΌν 리μ€νΈν 4.1 Spring MVC 1) Spring MVCλ? MVCλ? MVCλ Model-View-Controllerμ μ½μμ λλ€. μλλ μ λ‘μ€ μ°κ΅¬μμμ μΌνλ νΈλ€Όκ·Έλ² λ¦°μ¦μ»€κ·Έκ° μ²μμΌλ‘ μκ°ν κ°λ μΌλ‘, λ°μ€νΈν± μ΄ν리μΌμ΄μ μ©μΌλ‘ κ³ μλμμ΅λλ€. Model : λͺ¨λΈμ λ·°κ° λ λλ§νλλ° νμν λ°μ΄ν°μ λλ€. μλ₯Ό λ€μ΄ μ¬μ©μκ° μμ²ν μν λͺ©λ‘μ΄λ, μ£Όλ¬Έ λ΄μμ΄ μ΄μ ν΄λΉν©λλ€. View : μΉ μ ν리μΌμ΄μ μμ λ·°(View)λ μ€μ λ‘ λ³΄μ΄λ λΆλΆμ΄λ©°, λͺ¨λΈμ μ¬μ©ν΄ λ λλ§μ ν©λλ€. λ·°λ JSP, JSF, PDF, XMLλ±μΌλ‘ κ²°κ³Όλ₯Ό ννν©λλ€. Controller : 컨νΈλ‘€λ¬λ μ¬μ©μμ μ‘μ μ μλ΅νλ μ»΄ν¬λνΈμ λλ€. 컨νΈλ‘€λ¬λ λͺ¨λΈμ μ λ°μ΄νΈνκ³ , λ€λ₯Έ μ‘μ μ μνν©λλ€. MVC Model 1 μν€ν μ² λΈλΌμ°μ κ° μμ²μ νκ².. 3.3 Spring JDBC 1) Spring JDBC μκ° Spring JDBC JDBC νλ‘κ·Έλλ°μ 보면 λ°λ³΅λλ κ°λ° μμκ° μμ΅λλ€. μ΄λ¬ν λ°λ³΅μ μΈ μμλ κ°λ°μλ₯Ό μ§λ£¨νκ² λ§λλλ€. κ°λ°νκΈ° μ§λ£¨ν JDBCμ λͺ¨λ μ μμ€ μΈλΆμ¬νμ μ€νλ§ νλ μμν¬κ° μ²λ¦¬ν΄μ€λλ€. κ°λ°μλ νμν λΆλΆλ§ κ°λ°νλ©΄ λ©λλ€. Spring JDBC - κ°λ°μκ° ν΄μΌ ν μΌμ? Spring JDBC ν¨ν€μ§ org.springframework.jdbc.core JdbcTemplate λ° κ΄λ ¨ Helper κ°μ²΄ μ 곡 org.springframework.jdbc.datasource DataSourceλ₯Ό μ½κ² μ κ·ΌνκΈ° μν μ νΈ ν΄λμ€, νΈλμ μ 맀λμ Έ λ° λ€μν DataSource ꡬνμ μ 곡 org.springframework.jdbc.object.. 3.2 Spring Test 1) Test κ°μ 1. ν μ€ν μ΄λ 무μμΈκ°? μꡬνλ μμ€μ λ§μ‘±νλμ§ νμΈνκΈ° μν΄ κ²°ν¨μ λ°κ²¬νλ κ³Όμ μ΄λΌκ³ λ§ν μ μμ΅λλ€. μ ν΅μ μΈ ν μ€ν κ°λ μ μμ© νλ‘κ·Έλ¨ λλ μμ€ν μ΄ μ μλνλμ§ νμΈνλ κ²μ λλ€. νμ¬μ ν μ€ν κ°λ μ μ¬μ©μμ κΈ°λ μμ€κ³Ό μꡬ μ¬νμ λ§κ² ꡬνλκ³ λμνλμ§λ₯Ό νμΈνκ³ μ΄λ₯Ό ν΅ν΄ κ²°ν¨μ λ°κ²¬νκ³ , μ΅μ’ μ μΌλ‘ κ²°ν¨ λ°μ΄ν°λ₯Ό κ·Όκ°μΌλ‘ κ°λ° νλ‘μ νΈμ 리μ€ν¬(Risk)μ λν μμΉμ μΈ νλ¨ κ·Όκ±°λ₯Ό μμ¬ κ²°μ κΆμ(νλ‘μ νΈ κ΄λ¦¬μ λ±)μκ² μ λ¬νλ κ²μ λ§ν©λλ€. κ°λ° νλ‘μ νΈ μ΄κΈ°μ κ°λ° μ€κ° μ°μΆλ¬Ό(Work products)μ ν μ€ν κ΄μ μμ 리뷰(Review)νκ³ , ν μ€νΈ μΌμ΄μ€λ₯Ό 미리 λ§λλ κ³Όμ μμ κ²°ν¨μ λ°κ²¬νλ μμ (κ²°ν¨ μλ°© νλ)λ ν μ€ν νλμ μ€μν λΆ.. 3.1 Spring Core λͺ¨λ μ€μ΅ μ½λ(+μ£Όμ) λ§ν¬: νλ‘μ νΈλͺ : diexam01 1) Springμ΄λ? Spring Frameworkλ? μν°νλΌμ΄μ¦κΈ μ ν리μΌμ΄μ μ ꡬμΆν μ μλ κ°λ²Όμ΄ μ루μ μ΄μ, μμ€-μ€ν-μ(One-Stop-Shop) μνλ λΆλΆλ§ κ°μ Έλ€ μ¬μ©ν μ μλλ‘ λͺ¨λνκ° μ λμ΄ μμ΅λλ€. IoC 컨ν μ΄λμ λλ€. μ μΈμ μΌλ‘ νΈλμμ μ κ΄λ¦¬ν μ μμ΅λλ€. μμ ν κΈ°λ₯μ κ°μΆ MVC Frameworkλ₯Ό μ 곡ν©λλ€. AOP μ§μν©λλ€. μ€νλ§μ λλ©μΈ λ Όλ¦¬ μ½λμ μ½κ² λΆλ¦¬λ μ μλ κ΅¬μ‘°λ‘ λμ΄ μμ΅λλ€. νλ μ μν¬ λͺ¨λ μ€νλ§ νλ μμν¬λ μ½ 20κ°μ λͺ¨λλ‘ κ΅¬μ±λμ΄ μμ΅λλ€. νμν λͺ¨λλ§ κ°μ Έλ€ μ¬μ©ν μ μμ΅λλ€. AOPμ μΈμ€νΈλ£¨λ©ν μ΄μ (Instrumentation) spring-AOP : A.. 2.6 JSTL & EL 1) EL(Expression Language) νν μΈμ΄μ κΈ°λ³Έ κ°μ²΄ μ¬μ© μ νν μΈμ΄μ λ°μ΄ν° νμ λΆλ¦¬μΈ νμ - trueμ false μ μνμ - 0~9λ‘ μ΄λ£¨μ΄μ§ μ μ κ° μμμ κ²½μ° '-'κ° λΆμ μ€μνμ - 0~9λ‘ μ΄λ£¨μ΄μ Έ μμΌλ©°, μμμ ('.')μ μ¬μ©ν μ μκ³ , 3.24e3κ³Ό κ°μ΄ μ§μνμΌλ‘ νν κ°λ₯νλ€. λ¬Έμμ΄ νμ - λ°μ΄ν( ' λλ" )λ‘ λλ¬μΌ λ¬Έμμ΄. λ§μ½ μμ λ°μ΄ν(')λ₯Ό μ¬μ©ν΄μ ννν κ²½μ° κ°μ ν¬ν¨λ μμ λ°μ΄νλ \' μ κ°μ΄ \ κΈ°νΈμ ν¨κ» μ¬μ©ν΄μΌ νλ€. \ κΈ°νΈ μ체λ \\ λ‘ νμνλ€. λ νμ - null κ°μ²΄ μ κ·Ό κ·μΉ νν 1μ΄λ νν 2κ° nullμ΄λ©΄ nullμ λ°ννλ€. νν1μ΄ MapμΌ κ²½μ° νν2λ₯Ό keyλ‘ν κ°μ λ°ννλ€. νν1μ΄ Lis.. 2.5 Scope 1) scopeλ? 4κ°μ§ Scope page : νμ΄μ§ λ΄μμ μ§μλ³μμ²λΌ μ¬μ© pageContext (μμ γ ) Request : httpμμ²μ WASκ° λ°μμ μΉ λΈλΌμ°μ μκ² μλ΅ν λκΉμ§ λ³μκ° μ μ§λλ κ²½μ° μ¬μ© νλμ μμ²μ΄ λ€μ΄μμ μλ΅μ΄ λκ° λκΉμ§ HttpServletRequest Session : μΉ λΈλΌμ°μ λ³λ‘ λ³μκ° κ΄λ¦¬λλ κ²½μ° μ¬μ© session κ°μ²΄κ° μμ±λμ΄ μλ©Έλ λκΉμ§ (μμ²μ΄ νλκ° μλλΌ μ¬λ¬ κ°μ μμ²μ΄ λ€μ΄μλ κ³μ λ¨μμλ) μνμ μ§λ₯Ό ν λ μ¬μ©νλ scope, HttpSession Application : μΉ μ΄ν리μΌμ΄μ μ΄ μμλκ³ μ’ λ£λ λκΉμ§ λ³μκ° μ μ§λλ κ²½μ° μ¬μ© νλμ μ ν리μΌμ΄μ μ΄ μμ±λμ΄ μ΄κ² μλ©Έλ λκΉμ§ ServletContext (μμ γ .. 2.4 JSP 1) JSPλ? κ²°κ³Όλ₯Ό μΆλ ₯ν λͺ©μ μΌλ‘ μ¬μ© jspλ μμ²΄κ° λμνλ κ² μλλΌ λͺ¨λ jsp μλΈλ¦ΏμΌλ‘ λ°λμ΄μ λμν΄μ jspλ WebContent μμ μμ. μμ λλ ν 리λ₯Ό λ§λ€μ΄λ λκ³ . 맨 μ μ§μλ¬Έ, μ΄λ° μ§μλ₯Ό λ£λ κ²μ JSPλ₯Ό μ€ννλ WAS λ° κΊ½μ μ μλ° μ½λ 1λΆν° 10κΉμ§μ ν© : JSP λ±μ₯ λ°°κ²½ λ§μ΄ν¬λ‘μννΈμμ ASP(Active Server Page)λΌλ μ½κ² μΉμ κ°λ°ν μ μλ μ€ν¬λ¦½νΈ(script) μμ§μ λ°νν¨ (1998λ ) 1997λ μ λ°νλ μλΈλ¦Ώμ ASPμ λΉνμ¬ μλμ μΌλ‘ κ°λ° λ°©μμ΄ λΆνΈν¨ ASPμ λννκΈ° μνμ¬ 1999λ μ¬λ§μ΄ν¬λ‘μμ€ν μ¦μμ JSPλ₯Ό λ°ν JSPλ μ€μ λ‘ μλΈλ¦Ώ κΈ°μ μ μ¬μ© νμ jsp λ μλΈλ¦ΏμΌλ‘ λ°λκ³ μ΄ λ°λ μλΈλ¦Ώμ΄ μ€νλλ .. 2.3 Servlet 1) Servlet μ΄λ? dynamic web μ€λ₯ https://skypotato-note.tistory.com/136 https://stackoverflow.com/questions/4119448/the-import-javax-servlet-cant-be-resolved μλ° μΉ μ΄ν리μΌμ΄μ (Java Web Application) WASμ μ€μΉ(deploy)λμ΄ λμνλ μ΄ν리μΌμ΄μ μ λλ€. μλ° μΉ μ΄ν리μΌμ΄μ μλ HTML, CSS, μ΄λ―Έμ§, μλ°λ‘ μμ±λ ν΄λμ€(Servletλ ν¬ν¨λ¨, package, μΈν°νμ΄μ€ λ±), κ°μ’ μ€μ νμΌ λ±μ΄ ν¬ν¨λ©λλ€. μλ° μΉ μ΄ν리μΌμ΄μ μ ν΄λ ꡬ쑰 web.xml νμΌ μ€μνλ€ μ λ μλΈλ¦Ώμ΄λ? μλ° μΉ μ΄ν리μΌμ΄μ μ ꡬμ±μμ μ€ λμ μΈ μ²λ¦¬λ₯Ό νλ νλ‘κ·Έλ¨μ.. 2.2 μΉ κ°λ°νκ²½ μ€μ 1) Tomcat λ€μ΄λ°κΈ° λ° μ€μΉνκΈ° Apache Tomcatμ΄λ? μνμΉ ν°μΊ£(Apache Tomcat)μ μνμΉ μννΈμ¨μ΄ μ¬λ¨(Apache Software Foundation, ASF)μμ κ°λ°ν μΈκ³μμ κ°μ₯ λ§μ΄ μ¬μ©λλ WAS(Web Application Server)μ λλ€. μ»΄ν¨ν°μ μ΄μ체μ λ₯Ό μ€μΉν΄μΌλ§ μ»΄ν¨ν°λ₯Ό μ¬μ©ν μ μλ κ²μ²λΌ, μλ°λ₯Ό μ΄μ©νμ¬ μμ±λ μΉ μ΄ν리μΌμ΄μ μ WASκ° μμ΄μΌλ§ μ€νν μ μμ΅λλ€. μ΄λ κ°μ₯ λ§μ΄ μ¬μ©λλ WASκ° μνμΉ ν°μΊ£μ΄λΌκ³ λ§ν μ μμ΅λλ€. μνμΉ ν°μΊ£μ μ€νμμ€ μννΈ μ¨μ΄λ‘μ¨ λꡬλ 무λ£λ‘ μ¬μ©ν μ μμ΅λλ€. μ°Έκ³ λ‘ Tomcatμ 'μκ³ μμ΄'λ₯Ό λ»ν©λλ€. ν°κ³Ό μ 리μ ν°μ΄ μκ°λκΈ°λ ν©λλ€. Tomcat 8λ²μ μ JDK 7μ΄μμμ λμνλ©°.. 2.1 Webκ°λ°μ μ΄ν΄ 1) μΉ νλ‘κ·Έλλ°μ μν νλ‘κ·Έλ¨ μΈμ΄λ€ μ κΈ μΈμ΄ μ κΈ μΈμ΄λ κΈ°κ³ μ€μ¬μ μΈμ΄λΌκ³ λ§ν μ μμ΅λλ€. κΈ°κ³κ° μ§μ μμλ€μ μ μλ λ§λ‘ 'νλ‘κ·Έλ¨ μ½λλ₯Ό μμ±νλ€'κ³ λ§ν μ μμ΅λλ€. μ»΄ν¨ν°λ μ κΈ°λ‘ λμν©λλ€. μ¦, μ κΈ°μ νΈμΈ μΌμ‘λ€(on)μ κΊΌμ‘λ€(off) 2κ°μ§ μν κ°μΌλ‘ λμνλ€κ³ λ§ν μ μμ΅λλ€. λ³΄ν΅ μ«μλ‘ νννλ©΄ μΌμ‘λ€λ 1, κΊΌμ‘λ€λ 0μ μλ―Έν©λλ€. 0κ³Ό 1λ‘ ννλλ μ«μλ₯Ό μ°λ¦¬λ 2μ§μλΌκ³ λ§ν©λλ€. 2μ§μλ‘ μ΄λ€μ§ κ°μΌλ‘ μμ±νλ νλ‘κ·Έλλ° μΈμ΄λ₯Ό κΈ°κ³μ΄(Machine Language)λΌκ³ λ§ν©λλ€. μ«μλ‘λ§ λμ΄ μκΈ° λλ¬Έμ μ μ§λ³΄μλ κ΅μ₯ν μ΄λ ΅μ΅λλ€. μ«μλ‘λ§ λ νλ‘κ·Έλλ° μΈμ΄λ μ¬μ©μ΄ κ΅μ₯ν μ΄λ €μ μ΅λλ€. κ·Έλμ, μ΄ μ«μλ‘ λ λ¬Έμ₯κ³Ό 1:1λ‘ λμνλ κΈ°νΈλ₯Ό.. 1.5 JDBC 1) JDBCλ? JDBC κ°μ JDBC(Java Database Connectivity)μ μ μ - μλ°λ₯Ό μ΄μ©ν λ°μ΄ν°λ² μ΄μ€ μ μκ³Ό SQL λ¬Έμ₯μ μ€ν, κ·Έλ¦¬κ³ μ€ν κ²°κ³Όλ‘ μ»μ΄μ§ λ°μ΄ν°μ νΈλ€λ§μ μ 곡νλ λ°©λ²κ³Ό μ μ°¨μ κ΄ν κ·μ½ - μλ° νλ‘κ·Έλ¨ λ΄μμ SQLλ¬Έμ μ€ννκΈ° μν μλ° API - SQLκ³Ό νλ‘κ·Έλλ° μΈμ΄μ ν΅ν© μ κ·Ό μ€ ν νν JAVAλ νμ€ μΈν°νμ΄μ€μΈ JDBC APIλ₯Ό μ 곡 λ°μ΄ν°λ² μ΄μ€ λ²€λ, λλ κΈ°ν μ¨λνν°μμλ JDBC μΈν°νμ΄μ€λ₯Ό ꡬνν λλΌμ΄λ²(driver)λ₯Ό μ 곡νλ€. JDBC νκ²½ κ΅¬μ± JDK μ€μΉ JDBC λλΌμ΄λ² μ€μΉ - Mavenμ λ€μκ³Ό κ°μ μμ‘΄μ±μ μΆκ°νλ€. MySQLμ¬μ΄νΈμμ λ€μ΄λ‘λ νλ€. mysql mysql-connector-java ${mysq.. 1.4 Maven 1) Maven μ΄λ? Mavenμ΄λ? Mavenμ μ§κΈκΉμ§ μ ν리μΌμ΄μ μ κ°λ°νκΈ° μν΄ λ°λ³΅μ μΌλ‘ μ§νν΄μλ μμ λ€μ μ§μνκΈ° μνμ¬ λ±μ₯ν λꡬμ λλ€. Mavenμ μ¬μ©νλ©΄ λΉλ(Build), ν¨ν€μ§, λ¬Έμν, ν μ€νΈμ ν μ€νΈ 리ν¬ν , git, μμ‘΄μ±κ΄λ¦¬, svnλ±κ³Ό κ°μ νμκ΄λ¦¬μλ²μ μ°λ(SCMs), λ°°ν¬ λ±μ μμ μ μμ½κ² ν μ μμ΅λλ€. Mavenμ μ΄ν΄νλ €λ©΄ CoC(Convention over Configuration)λΌλ λ¨μ΄λ₯Ό λ¨Όμ μ΄ν΄ν΄μΌ ν©λλ€. CoCλ μΌμ’ μ κ΄μ΅μ λ§νλλ°, μλ₯Ό λ€μλ©΄ νλ‘κ·Έλ¨μ μμ€νμΌμ μ΄λ€ μμΉμ μμ΄μΌ νκ³ , μμ€κ° μ»΄νμΌλ νμΌλ€μ μ΄λ€ μμΉμ μμ΄μΌ νκ³ λ±μ 미리 μ ν΄λ¨λ€λ κ²μ λλ€. μ΄ λ§μ κ΄μ΅μ μ΄λ―Έ μ΅μν μ¬μ©μλ μ½κ² Mavenμ μ¬μ©ν .. 1.3 κ°λ°νκ²½ μ€μ 1) JDK λ€μ΄λ°κΈ° λ° μ€μΉνκΈ° μλ° νλ‘κ·Έλ¨μ νλ«νΌμ λ 립μ μ΄μ§λ§ μλ°λ₯Ό μ€νμμΌμ£Όλ JVM μ체λ νλ«νΌ μ’ μμ μ΄λ€. jdk 1.8.XXX λ§ λ€μ΄λ°μΌλ©΄ λλ€. jreλ jdkμ ν¬ν¨λμ΄ μλ€. μ λ κΈ°μ‘΄μ κΉμλ¨λ λ²μ κ³Ό μΆ©λν΄μ κ½€λ κ³ μμ νμ΅λλ€... JDK: Java Development Kit μλ° μμ© κ°λ° νκ²½μΌλ‘ κ°λ°μ νμν λꡬλ₯Ό ν¬ν¨νκ³ μλ€. μ»΄νμΌλ¬ λ° λꡬ, JRE, ν΄λμ€μ λΌμ΄λΈλ¬λ¦¬μ μμ€, μλ° μμ© νλ‘κ·Έλ¨μ μν μμ€ λ± JRE: JAVA μλ° μ€ν νκ²½μΌλ‘ JVMμ΄ ν¬ν¨λμ΄ μλ€. μλ° μ€ν νκ²½λ§ νμν κ²½μ° JREλ§ λ°λ‘ λ€μ΄μ΄ κ°λ₯νλ€. 2) νκ²½μ€μ νκΈ° νκ²½ λ³μ κ³ μΉκ³ java -version, javac -version λ²μ λ§λμ§ νμΈ 3) μ΄ν΄λ¦½.. 1.2 SQL 1) SQLμ΄λ? SQL(Structured Query Language) SQLμ λ°μ΄ν°λ₯Ό λ³΄λ€ μ½κ² κ²μνκ³ μΆκ°, μμ , μμ κ°μ μ‘°μμ ν μ μλλ‘ κ³ μλ μ»΄ν¨ν° μΈμ΄μ λλ€. κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό μ‘°μνκ³ μΏΌλ¦¬νλ νμ€ μλ¨μ λλ€. DML (Data Manipulation Language): λ°μ΄ν°λ₯Ό μ‘°μνκΈ° μν΄ μ¬μ©ν©λλ€. INSERT, UPDATE, DELETE, SELECT λ±μ΄ μ¬κΈ°μ ν΄λΉν©λλ€. DDL (Data Definition Language): λ°μ΄ν°λ² μ΄μ€μ μ€ν€λ§λ₯Ό μ μνκ±°λ μ‘°μνκΈ° μν΄ μ¬μ©ν©λλ€. CREATE, DROP, ALTER λ±μ΄ μ¬κΈ°μ ν΄λΉν©λλ€. DCL (Data Control Language) : λ°μ΄ν°λ₯Ό μ μ΄νλ μΈμ΄μ λλ€. κΆνμ κ΄λ¦¬νκ³ , λ°.. 1.1 MySQL 1) intro λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν Q> λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν μ μ΄λ¦°μ΄λ μ μ μμ μ λλ‘ μ€λͺ ν΄μ£ΌμΈμ. A> λμκ΄μ μλ μ± λ€μ΄ λ°μ΄ν°λ² μ΄μ€λΌκ³ νλ€λ©΄, λμκ΄ μ¬μλΆλ€μ΄λ λμ μ 보λ₯Ό μ°Ύμμ£Όλ μ»΄ν¨ν°λ₯Ό DBMSλΌκ³ λ³Ό μ μμ΅λλ€. λ°μ΄ν°λ² μ΄μ€μ κΈ°λ³Έκ°λ (μ μ) λ°μ΄ν°μ μ§ν© (a Set of Data) μ¬λ¬ μμ© μμ€ν (νλ‘κ·Έλ¨)λ€μ ν΅ν©λ μ 보λ€μ μ μ₯νμ¬ μ΄μν μ μλ 곡μ©(share) λ°μ΄ν°μ μ§ν© ν¨μ¨μ μΌλ‘ μ μ₯, κ²μ, κ°±μ ν μ μλλ‘ λ°μ΄ν° μ§ν©λ€λΌλ¦¬ μ°κ΄μν€κ³ μ‘°μ§νλμ΄μΌ νλ€. λ°μ΄ν°λ² μ΄μ€μ νΉμ± μ€μκ° μ κ·Όμ±(Real-time Accessability) - μ¬μ©μμ μꡬλ₯Ό μ¦μ μ²λ¦¬ν μ μλ€. κ³μμ μΈ λ³ν(Continuous Evol.. μ΄μ 1 Β·Β·Β· 4 5 6 7 λ€μ