Open Source Framework과 Ajax

Size: px
Start display at page:

Download "Open Source Framework과 Ajax"

Transcription

1 Spring framework 1

2 Spring 이란? 오픈소스프레임워크 Rod Johnson 창시 Expert one-on-one J2EE Design - Development, 2002, Wrox Expert one-on-one J2EE Development without EJB, 2004, Wrox 엔터프라이즈어플리케이션개발의복잡성을줄여주기위한목적 EJB 사용으로수행되었던모든기능을일반 POJO(Plain Old Java Object) 를사용해서가능하게함. 경량컨테이너 (light weight container) 주요개념 의존성주입 (Dependency Injection) 관점지향프로그래밍 (Aspect-Oriented Programming) 2

3 Spring 장점 경량컨테이너 객체의라이프사이클관리, Java EE 구현을위한다양한 API제공 DI (Dependency Injection) 지원 AOP (Aspect Oriented Programming) 지원 POJO (Plain Old Java Object) 지원 다양한 API와의연동지원을통한 Java EE 구현가능 3

4 Spring Container 설치 스프링커뮤니티사이트 다운로드 spring-framework-xxx-with-dependencies.zip 을다운받는다. 4

5 Spring IDE 이클립스 Plugin 설정 (1/2) 상단메뉴 : help-install new software update site : 5

6 Spring IDE 이클립스 Plugin 설정 (2/2) Project 생성 오른마우스메뉴 -Spring Tools-Add Spring Project Nature 선택 6

7 Dependency Injection ( 의존성주입 ) 7

8 의존성주입 (Dependency Injection, DI) 의존관계주입 (dependency injection) 객체간의의존관계를객체자신이아닌외부의조립기가수행한다. 제어의역행 (inversion of control, IoC) 이라는의미로사용되었음. Martin Fowler, 2004 제어의어떠한부분이반전되는가라는질문에 의존관계주입 이라는용어를사용 복잡한어플리케이션은비즈니스로직을수행하기위해서두개이상의클래스들이서로협업을하면서구성됨. 각각의객체는협업하고자하는객체의참조를얻는것에책임성이있음. 이부분은높은결합도 (highly coupling) 와테스트하기어려운코드를양산함. DI 를통해시스템에있는각객체를조정하는외부개체가객체들에게생성시에의존관계를주어짐. 즉, 의존이객체로주입됨. 객체가협업하는객체의참조를어떻게얻어낼것인가라는관점에서책임성의역행 (inversion of responsibility) 임. 느슨한결합 (loose coupling) 이주요강점 객체는인터페이스에의한의존관계만을알고있으며, 이의존관계는구현클래스에대한차이를모르는채서로다른구현으로대체가가능 의존관계주입 DAO1 Service 의존관계주입 DAO2 8

9 Spring 의 DI 지원 Spring Container 가 DI 조립기 (Assembler) 를제공 스프링설정파일을통하여객체간의의존관계를설정한다. Spring Container 가제공하는 api 를이용해객체를사용한다. 9

10 Spring 설정파일 Spring Container 가어떻게일할지를설정하는파일 Spring container 는설정파일에설정된내용을읽어 Application 에서필요한기능들을제공한다. XML 기반으로작성한다. Root tag 는 <beans> 이다 파일명은상관없다. 예 ) applicationcontext.xml <?xml version="1.0" encoding="utf-8"?> <beans xmlns=" xmlns:xsi=" xsi:schemalocation=" </beans> 10

11 Bean 객체주입받기 설정파일설정 (1/2) 주입할객체를설정파일에설정한다. <bean> : 스프링컨테이너가관리할 Bean 객체를설정 기본속성 name : 주입받을곳에서호출할이름설정 id : 주입받을곳에서호출할이름설정 ( / 값으로못가짐 ) class : 주입할객체의클래스 factory-method : 객체를생성해주는 factory 메소드호출시» 주로 Singleton 패턴구현클래스객체호출시 <?xml version="1.0" encoding="utf-8"?> <beans xmlns=" xmlns:xsi=" xsi:schemalocation=" </beans> <bean id= dao class= spring.di.model.memberdao /> 11

12 Bean 객체주입받기 설정 Bean 사용 (2/2) 설정파일에설정한내용을바탕으로 Spring API 를통해객체를주입받는다. 설정파일이어디있는지설정 객체를만들어주는 (Assembler) 객체생성 public static void main(string [] args){ } // 스프링컨테이너객체생성 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); // 설정파일에설정한 <bean> 태그의 id/name 을통해객체를받아온다. MemberDAO dao = (MemberDAO)ctx.getBean("dao"); 12

13 Spring Container 객체 Spring Container : 객체를관리하는컨테이너. 다음아래의 interface 들을구현한다. <<interface>> BeanFactory 빈객체를관리하고각빈객체간의의존관계를설정해주는기능을제공. 가장단순한컨테이너구현클래스 : XmlBeanFactory <<interface>> ApplicationContext BeanFactory 기능에다양한추가기능을제공. 추가기능 : AOP, 메시지지원, 국제화지원등주요구현클래스 : ClassPathXmlApplicationContext <<interface>> WebApplicationContext Web application 용 ApplicationContext. Web Application 당하나씩생성된다. 주요구현클래스 : XmlWebApplicationContext AnnotationConfigWebApplicationContext 13

14 설정을통한객체주입 Constructor 를이용 (1/4) 객체또는값을생성자를통해주입받는다. <constructor-arg> : 하나의 argument 지정 <bean> 의하위태그로설정한 bean 객체또는값을생성자를통해주입하도록설정 설정방법 : <ref>,<value> 와같은하위태그를이용하여설정, 속성을이용해설정 하위태그이용 <ref bean= bean name /> - 객체를주입시 <value> 값 </value> - 문자 (String), Primitive data 주입시 type 속성 : 값을 1 차로 String 으로처리한다. 값의타입을명시해야하 는경우사용. ex) <value type= int >10</value> 속성이용 ref= bean 이름 value= 값 14

15 설정을통한객체주입 Constructor 를이용 (2/4) 값을주입받을객체 package to; public class PersonTO{ private String id, private String name, private int age; } public Person(String id){...} public Person(String id, String name){ } public Person(int age){ } //1번생성자 //2번생성자 //3번생성자 1 번생성자에주입예 <bean id= person class= to.personto > <constructor-arg> <value>abcde</value> </constructor-arg> </bean> 또는 <bean id= person class= to.personto > <constructor-arg value= abc /> </bean> 15

16 설정을통한객체주입 Constructor 를이용 (3/4) 2 번생성자에주입예 <bean id= person class= to.personto > <constructor-arg> <value>abcde</value> </constructor-arg> <constructor-arg> <value>hong Gil Dong</value> </constructor-arg> </bean> 또는 <bean id= person class= to.personto > <constructor-arg value= abc /> <constructor-arg value= Hong Gil Dong /> </bean> 3 번생성자에주입예 <bean id= person class= to.personto > <constructor-arg> <value type= int >30</value> </constructor-arg> </bean> 또는 <bean id= person class= to.personto > <constructor-arg value= 30 type= int /> </bean> 16

17 설정을통한객체주입 Constructor 를이용 (4/4) bean 객체를주입 값을주입받을객체 public class BusinessService{ private Dao dao = null; public BusinessService(Dao dao){ this.dao = dao; } } <bean id= dao class= spring.di.model.oracledao /> <bean id= service class= spring.di.model.service.businessservice > <constructor-arg> <ref bean = dao /> </constructor-arg> </bean> 또는 <bean id= service class= spring.di.model.service.businessservice > <constructor-arg ref= dao > </bean> 17

18 설정을통한객체주입 Property 를이용 (1/5) property 를통해객체또는값을주입받는다.- setter 메소드 주의 : setter 를통해서는하나의값만받을수있다. <property> : <bean> 의하위태그. 설정한 bean 객체또는값을 property 를통해주입하도록설정 속성 : name 값을주입할 property 이름 (setter 의이름 ) 설정방법 <ref>,<value> 와같은하위태그를이용하여설정 속성을이용해설정 xml namespace 를이용하여설정 18

19 설정을통한객체주입 Property 를이용 (2/5) 하위태그를이용한설정 <ref bean= bean name /> - 객체를주입시 <value> 값 </value> - 문자 (String) Primitive data 주입시 type 속성 : 값의타입을명시해야하는경우사용. 속성이용 ref= bean 이름 value= 값 XML Namespace 를이용 <beans> 태그의스키마설정에 namespace 등록 xmlns:p=" <bean> 태그에속성으로설정 기본데이터주입 : p:propertyname= value. ex)<bean p:id= a > bean 주입 : p:propertyname-ref= bean_id ex)<bean p:dao-ref= dao > 19

20 설정을통한객체주입 Property 를이용 (3/5) Primitive Data Type 주입 값을주입받을객체 package spring.to; public class Person{ private String id, private String name, private int age; public void setid(string id) { } public void setname(string name) { } public void setage(int age) { } <bean id= person class= to.person > <property name="name"> <value>hong</value> </property> <property name="id" value="abcde"/> <property name="age" value="20"/> </bean> 20

21 설정을통한객체주입 Property 를이용 (4/5) Bean 객체주입 값을주입받을객체 public class BusinessService{ private Dao dao = null; public void setdao(dao dao){ } } <bean id= dao class= spring.di.model.oracledao /> <bean id= service class= spring.di.model.service.businessservice > <property name= dao > <ref bean = dao /> </property > </bean> 또는 <bean id= service class= spring.di.model.service.businessservice > < property name= dao ref= dao > </bean> 21

22 설정을통한객체주입 Property 를이용 (5/5) XML Namespace 를이용한주입 값을주입받을객체 public class BusinessService{ private Dao dao = null; private int waitingtime = 0; public void setdao (Dao dao){ } public setwaitingtime(int wt){ } } <?xml version="1.0" encoding="utf-8"?> <beans xmlns=" xmlns:xsi=" xsi:schemalocation=" xsd" xmlns:p=" > <bean name= dao class= spring.di.model.oracledao /> <bean name= service" class= service.businessservice" p:waitingtime= 20 p:dao-ref= dao"/> </beans> 22

23 Collection 객체주입하기 (1/5) <property> 또는 <constructor-arg> 의하위태그로 Collection 값을설정하는태그를이용해값주입설정 설정태그 태그 Collection 종류설명 <list> java.util.list List 계열컬렉션값목록전달 <set> java.util.set Set 계열컬렉션값목록전달 <map> java.util.map Map계열컬렉션에 keyvalue 의값목록전달 <props> java.util.properties Properties 에 key(string)- value(string) 의값목록전달 Collection 에값을설정하는태그 <ref> : <bean> 으로등록된객체 <value> : 기본데이터 <bean> : 임의의 bean <list>,<map>,<props>, <set> : 컬랙션 <null> : null 23

24 Collection 객체주입하기 (2/5) <list> List 계열컬렉션이나배열에값들을넣기. 속성 : value-type 값들의 type 지정. Fullyname 으로지정한다. <ref>, <value> 태그를이용해값설정 <ref bean= bean_id /> : bean 객체 list 에추가 <value [type= type ]> 값 </value> : 문자열 (String), Primitive 값 list 에추가 public void setmylist(list list){ } <bean id= otherbean class= to.otherbean /> <bean id= mybean class= to.myto > <property name= mylist > <list> <value>10</value> ->String 으로저장됨 <value type= java.lang.integer >20</value>->Integer 로저장됨 <ref bean= otherbean /> </list> </property> </bean> 24

25 Collection 객체주입하기 (3/5) <map> Map 계열의 Collection 에객체들을넣기 속성 : key-type, value-type : key 와 value 의타입을고정시킬경우사용 <entry> 를이용해 key-value 를 map 에등록 속성 key, key-ref : key 설정 value, value-ref : 값설정 public void setmymap(map map){ } <bean id= otherbean class= to.otherbean /> <bean id= mybean class= to.myto > <property name= mymap > <map> <entry key= id value= abc /> <entry key= other value-ref= otherbean /> </map> </property> </bean> 25

26 Collection 객체주입하기 (4/5) <props> java.util.properties 값 ( 문자열 ) 을넣기 <prop> 를이용해 key-value 를 properties 에등록 속성 key : key 값설정 값은태그사이에넣는다. : <prop key= id >abcde</prop> public void setjdbcproperty (Properties props){ } <bean id= mydao class= dao.mydao > <property name= jdbcproperty > <props> <prop key= driver >JDBC Driver</prop> <prop key= url >jdbc:url:// /mydb</prop> <prop key= user >dbuser</prop> <prop key= pwd >dbpassword</prop> </props> </property> </bean> 26

27 Collection 객체주입하기 (5/5) <set> java.util.set 에객체를넣기 속성 : value-type : value 타입설정 <value>, <ref> 를이용해값을넣는다. public void setmyset(set props){ } <bean id= otherbean class= to.otherbean /> <bean id= mybean class= to.bean > <property name= myset> <set> <value>10</value> <value>20<value> <ref bean= otherbean /> </set> </property> </bean> 27

28 Bean 객체의생성단위 (1/2) BeanFactory 를통해 Bean 을요청시객체생성의범위 ( 단위 ) 를설정 <bean> 의 scope 속성을이용해설정 scope 의값 값 singleton 컨테이너는하나의빈객체만생성한다. - default prototype 빈을요청할때마다생성한다. request session Http 요청마다빈객체생성 HttpSession 마다빈객체생성 request, session 은 WebApplicationContext 에서만적용가능 28

29 Bean 객체의생성단위 (2/2) 빈 (bean) 범위지정 singleton 과 prototype <bean id= dao class= dao.oracledao scope= prototype /> prototype 은 Spring 어플리케이션컨텍스트에서 getbean 으로빈 (bean) 을사용시마다새로운인스턴스를생성함. singleton 은 Spring 어플리케이션컨텍스트에서 getbean 으로빈 (bean) 을사용시동일한인스턴스를생성함. 29

30 Factory 메소드를통한 Bean 주입 Factory 메소드로부터빈 (bean) 생성 public class OracleDAO{ private OracleDAO() {} private static OracleDAO instance; public static OracleDAO getinstance(){ if(instance==null) instance = new OracleDAO(); return instance; } } Singleton 클래스는 static factory 메소드를통해서인스턴스생성이가능하면단하나의인스턴스만을생성함. <bean id= dao class= OracleDAO factory-method= getinstance /> * 주 : getbean() 으로호출시 private 생성자도호출하여객체를생성한다. 그러므로위의상황에서 factory 메소드로만호출해야객체를얻을수있는것은아니다. 30

31 Spring AOP 31

32 Spring AOP 개요 (1/2) Application 을두가지관점에따라구현 핵심관심사항 (core concern) 공통관심사항 (cross-cutting concern) 기존 OOP 보완 공통관심사항을여러모듈에서적용하는데한계가존재 AOP 는핵심관심사항과공통관심사항분리하여구현 32

33 Spring AOP 개요 (2/2) 핵심관심사항 : CourseService, StudentService, MiscService 공통관심사항 : Security, Transactions, Other - 핵심관심사항에공통관심사항을어떻게적용시킬것인가 -> AOP 33

34 Spring AOP 용어 Target 핵심사항 ( Core) 가구현된객체 JoinPoint 공통관심사항이적용될수있는지점 (ex: 메소드호출시, 객체생성시등 ) Pointcut JoinPoint 중실제공통사항이적용될대상을지정. Advice 공통관심사항 (Cross-Cutting) 구현코드 + 적용시점. 적용시점 : 핵심로직실행전, 후, 정상종료후, 비정상종료후, 전 / 후가있다. Aspect Advice + Pointcut Weaving Proxy를생성하는것. ( 컴파일시점, Class Loading 시점, 런타임시점 Weaving이있다.) 34

35 Spring 에서 AOP 구현방법 AOP 구현 POJO Class 를이용한 AOP 구현 Spring 설정파일을이용한설정 어노테이션 (Annotation) 을이용한설정 스프링 API 를이용한 AOP 구현 35

36 POJO 기반 AOP 구현 설정파일에 AOP 설정. XML 스키마확장기법을통해설정파일을작성한다. POJO 기반공통관심사항로직클래스작성 36

37 POJO 기반 AOP 구현 - 설정파일작성 (1/5) XML 스키마를이용한 AOP 설정 aop 네임스페이스와 XML 스키마추가 <beans xmlns=" xmlns:p=" xmlns:aop=" xmlns:xsi=" xsi:schemalocation=" </beans> 37

38 POJO 기반 AOP 구현 - 설정파일작성 (2/5) XML 스키마를이용한 AOP 설정예 <beans xmlns=" xmlns:p=" xmlns:aop=" xmlns:xsi=" xsi:schemalocation=" <bean id= writelog class= org.kosta.spring.logaspect /> <aop:config> <aop:pointcut id= publicmethod expression= execution(public * org.kosta.spring..*.*(..)) /> <aop:aspect id= logingaspect ref= writelog > <aop:around pointcut-ref= publicmethod method= logging /> </aop:aspect> </aop:config> <bean id= targetclass class= org.kosta.spring.targetclass /> </beans> 38

39 POJO 기반 AOP 구현 - 설정파일작성 (3/5) AOP 설정태그 1. <aop:config> : aop 설정의 root 태그. Aspect 설정들의묶음 2. <aop:aspect> : Aspect 설정 하나의 Aspect 설정 Aspect 가여러개일경우 <aop:aspect> 태그가여러개온다. 3. <aop:pointcut> : Advice 에서참조할 pointcut 설정 4. Advice 설정태그들 A. <aop:before> - 메소드실행전실행될 Advice B. <aop:after-returning> - 메소드정상실행후실행될 Advice C. <aop:after-throwing> - 메소드에서예외발생시실행될 Advice D. <aop:after> - 메소드정상또는예외발생상관없이실행될 Advice finally E. <aop:around> - 모든시점에서적용시킬수있는 Advice 구현 39

40 POJO 기반 AOP 구현 - <aop:aspect> (4/5) 한개의 Aspect (advice + pointcut) 을설정 속성 ref : 공통관심사항을설정한 Bean(Advice 빈 ) 참조 id : 식별자 다른 Aspect 태그와구별하기위한식별자 자식태그 <aop:pointcut> : pointcut 지정 advice 관련태그가올수있다. <aop:config> <aop:aspect id= logingaspect ref= writelog > <aop:pointcut id= publicmethod expression= execution(public * org.myspring..*.* (..)) /> <aop:around pointcut-ref= publicmethod method= logging /> </aop:aspect> </aop:config> 40

41 POJO 기반 AOP 구현 - <aop:pointcut> (5/5) Pointcut( 공통기능이적용될곳 ) 을지정하는태그 <aop:config> 나 <aop:aspect> 의자식태그 AspectJ 표현식을통해 pointcut 지정 속성 : id : 식별자로 advice 태그에서사용됨 expression : pointcut 지정 <aop:pointcut id= publicmethod expression= execution(public * org.myspring..*.*(..)) /> <aop:config> <aop:aspect id= logingaspect ref= writelog > <aop:pointcut id= publicmethod expression= execution(public * org.myspring..*.*(..)) /> <aop:around pointcut-ref= publicmethod method= logging /> </aop:aspect> </aop:config> 41

42 POJO 기반 AOP 구현 - AspectJ 표현식 (1/3) AspectJ에서지원하는패턴표현식 스프링은메서드호출관련명시자만지원 명시자 (pattern) -? 는생략가능 명시자 execution : 메소드구문을기준으로지정 within : Class 명을기준으로지정 bean : 설정파일에지정된빈의이름 (name 속성 ) 을이용해지정. 2.5 버전에추가됨. 42

43 POJO 기반 AOP 구현 - AspectJ 표현식 (2/4) 표현 명시자 ( 패턴 ) - 패턴은명시자마다다름. 예 ) execution(public * abc.def..*service.set*(..) 패턴문자. * : 1 개의모든값을표현 argument 에서쓰인경우 : 1 개의 argument package 에쓰인경우 : 1 개의하위 package 이름 ( 메소드, 클래스 ) 에쓰일경우 : 모든글자들.. : 0 개이상 argument 에서쓰인경우 : 0 개이상의 argument package 에쓰인경우 : 0 개의이상의하위 package execution execution( 수식어패턴? 리턴타입패턴패키지패턴?. 클래스명패턴. 메소드명패턴 (argument 패턴 )) 수식어패턴 : public, protected, 생략 argument 에 type 을명시할경우객체타입은 fullyname 으로넣어야한다. java.lang 은생략가능 위예설명적용하려는메소드들의패턴은 public 제한자를가지며리턴타입에는모든타입이다올수있다. 이름은 abc.def 패키지와그하위패키지에있는모든클래스중 Service 로끝나는클래스들에서 set 으로시작하는메소드이며 argument 는 0 개이상오며타입은상관없다. 43

44 POJO 기반 AOP 구현 - AspectJ 표현식 (3/4) within within( 패키지패턴. 클래스명패턴 ) bean bean(bean 이름패턴 ) 44

45 POJO 기반 AOP 구현 - AspectJ 표현식 (4/4) 예 execution(* test.spring.*.*()) execution(public * test.spring..*.*()) execution(public * test.*.*.get*(*)) execution(string test.spring.memberservice.registmember(..)) execution(* test.spring..*service.regist*(..)) execution(public * test.spring..*service.regist*(string,..)) within(test.spring.service.memberservice) within(test.spring..memberservice) within(test.spring.aop..*) bean(memberservice) bean(*service) 45

46 POJO 기반 AOP 구현 POJO 기반 Advice 클래스작성 설정파일에 AOP 설정 Advice class 를 Bean 으로설정 <aop:aspect> 태그를이용해 Advice, Pointcut 을설정한다. 46

47 POJO 기반 AOP 구현 - Advice 설정관련태그 시점에따른 5 가지태그 before, after-returning, after-throwing, after, around 공통속성 pointcut-ref : pointcut 참조. <aop:pointcut> 태그의 id 명을넣어 pointcut 지정 pointcut : 직접 pointcut 을설정한다. method : Advice bean 에서호출할메소드명지정 <bean id= writelog class= org.kosta.spring.logaspect /> <aop:config> <aop:aspect id= logingaspect ref= writelog > <aop:pointcut id= publicmethod expression= execution(public * org.my.spring..*.*(..)) /> <aop:before pointcut-ref= publicmethod method= logging /> </aop:aspect> </aop:config> 47

48 POJO 기반 AOP 구현 Advice 클래스작성 (1/6) POJO 기반의클래스로작성한다. 클래스명이나메서드명에대한제한은없다. 설정파일에서 Advice 등록시메소드명을등록한다. Advice 태그의 method 속성에서설정한다. 메소드구문은호출되는시점에따라달라질수있다. 48

49 POJO 기반 AOP 구현 Advice 클래스작성 (2/6) Before Advice 핵심관심사항메소드가실행되기전에실행됨 return type : 상관없으나 void로한다. argument : 없거나 JoinPoint 객체를받는다. <aop:before pointcut-ref= publicmethod method= beforelogging /> public void beforelogging(){ } 49

50 POJO 기반 AOP 구현 Advice 클래스작성 (3/6) After Returning Advice 핵심관심사항메소드실행이정상적으로끝난뒤실행됨 return type : 상관없으나 void 로한다. argument : 없거나 JoinPoint 객체를받는다. JoinPoint 는항상첫 argument 로사용된다. 대상메소드에서리턴되는값을 argument 로받을수있다. type : Object 또는대상메소드에서 return 하는 value 의 type <aop:after-returning pointcut-ref= publicmethod method= returnlogging returning= retvalue /> public void returnlogging(object retvalue){ } 50

51 POJO 기반 AOP 구현 Advice 클래스작성 (4/6) After Throwing Advice 핵심관심사항메소드실행중예외가발생한경우실행됨 return type : 상관없으나 void 로한다. argument : 없거나 JoinPoint 객체를받는다. JoinPoint 는항상첫 argument 로사용된다. 대상메소드에서전달되는예외객체를 argument 로받을수있다. <aop:after-throwing pointcut-ref= publicmethod method= throwinglogging throwing= ex /> public void throwinglogging(myexception ex){ // 대상객체에서리턴되는값을받을수는있지만수정할수는없다. } 51

52 POJO 기반 AOP 구현 Advice 클래스작성 (5/6) After Advice 핵심관심사항메소드실행이종료된뒤오류발생여부와상관없이무조건실행된다. return type : 상관없으나 void 로한다. argument : 없거나 JoinPoint 객체를받는다. <aop:after pointcut-ref= publicmethod method= afterlogging /> public void afterlogging(){ } 52

53 POJO 기반 AOP 구현 Advice 클래스작성 (6/6) Around Advice 앞의네가지 Advice 를다구현할수있는 Advice. return type : Object 또는 void argument [ 없거나 ] org.aspectj.lang.proceedingjoinpoint 를 argument 로지정한다. <aop:around pointcut-ref= publicmethod method= aroundlogging /> public Object aroundlogging(proceedingjoinpoint joinpoint) throws Throwable{ } //before 코드 try{ Object retvalue = joinpoint.proceed(); // 대상객체의메소드호출 //after-returning 코드 return retvalue; // 호출한곳으로리턴값넘긴다. 넘기기전수정가능 }catch(throwable e){ //after-throwing 코드 throw e; }finally{ } //after 코드 53

54 JoinPoint 대상객체에대한정보를가지고있는객체로 Spring container로부터받는다. org.aspectj.lang 패키지에있음 반드시 Advice 메소드의첫 argument로와야한다. 메소드들 Object gettarget() : 대상객체를리턴 Object[] getargs() : 파라미터로넘겨진값들을배열로리턴. 넘어온값이없으면빈배열개체가 return 됨. Signature getsignature () : 호출되는메소드의정보 Signature : 호출되는대상객체에대한구문정보를가진객체 String getname() : 대상메소드명리턴 String toshortstring() : 대상메소드명리턴 String tolongstring() : 대상메서드전체 syntax 를리턴 String getdeclaringtypename() : 대상메소드가포함된 type 을 return. (package 명.type 명 ) 54

55 @Aspect 어노테이션을이용한 어노테이션을이용하여 Aspect 클래스에직접 Advice 및 Pointcut 등을직접설정 설정파일에 <aop:aspectj-autoproxy/> 를추가해야함 Aspect class 를 <bean> 으로등록 어노테이션 : Aspect pointcut returning= throwing= pointcut pointcut ) Around 를제외한나머지메소드들은첫 argument 로 JoinPoint 를가질수있다. Around 메소드는 argument 로 ProceedingJoinPoint 를가질수있다. 55

56 Web 에서 Spring ContextLoaderListener 설정파일 <context-param> 으로등록된설정파일을바탕으로 WebApplicationContext객체를생성해 ApplicationScope에속성으로 binding <listener> <listener-class> org.springframework.web.context.contextloaderlistener </listener-class> </listener> <context-param> <param-name>contextconfiglocation</param-name> <param-value>/web-inf/service-service.xml /WEB-INF/dao-data.xml </param-value> </context-param> 56

57 Web 에서 Spring WebApplicationContextUtil 를통해 WebApplicationContext 조회 getwebapplicationcontext(servletcontext) : WebApplicationContext 57

58 Spring MVC 58

59 Spring MVC 구성주요컴포넌트 DispatcherServlet Front Controller Controller 클라이언트요청처리를수행하는 Controller. HandlerMapping 클라이언트의요청을처리할 Controller 를찾는작업처리 View 응답하는로직을처리 ViewReslover 응답할 View 를찾는작업을처리 ModelAndView 응답할 View 와 View 에게전달할값을저장하는용도의객체 59

60 Spring MVC 흐름 (1/2) Spring MVC MVC 패턴기반웹개발프레임워크 2 Handler Mapping Client 1 Dispatcher Servlet ModelAndView 3 4 Controller 5 ViewResolver 6 View 60

61 Spring MVC 흐름 (2/2) 요청처리순서 1DispatcherServlet 이요청을수신 단일 Front controller servlet 요청을수신하여처리를다른컴포넌트에위임 어느컨트롤러에요청을전송할지결정 2DispatcherServlet 은 HandlerMapping 에어느컨트롤러를사용할것인지문의 3DispatcherServlet 은요청을컨트롤러에게전송하고컨트롤러는요청을처리한후결과리턴 비즈니스로직수행후결과정보 (Model) 가생성되어 JSP 와같은뷰에서사용됨 4ModelAndView 를생성하여 DispatcherServlet 에리턴 5ModelAndView 정보를바탕으로바탕으로 ViewResolver 에게 View 를요청 6View 는결과정보를사용하여화면을표현함. 61

62 Spring MVC 구현 Step Spring MVC 를이용한어플리케이션작성스텝 1.web.xml 에 DispacherServlet 등록및 Spring 설정파일등록 2.Spring 설정파일에 HandlerMapping 설정 3. 컨트롤러구현및 Spring 설정파일에등록 4. 컨트롤러와 JSP 의연결위해 View Resolver Spring 설정파일에등록 5.JSP(or View 작성후설정 ) 코드작성 Client Request Response Dispatcher Servlet Request Response Controller dosomething() Model 62

63 DispatcherServlet 설정과 ApplicationContext (1/2) DispatcherServlet 설정 web.xml 에등록 스프링설정파일 : <servlet-name>-servlet.xml 이고 WEB-INF\ 아래추가한다. <url-pattern> 은 DispatcherServlet 이처리하는 URL 매핑패턴을정의 <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> Spring Container 는설정파일의내용을읽어 ApplicationContext 객체를생성한다. 설정파일명 : dispatcher-servlet.xml MVC 구성요소 (HandlerMapping, Controller, ViewResolver, View) 설정과 bean, aop 설정들을한다. 63

64 DispatcherServlet 설정과 ApplicationContext (2/2) Spring 설정파일등록하기 <servlet> 의하위태그인 <init-param> 에 contextconfiglocation 이름으로등록 경로는 Application Root부터절대경로로표시 여러개의경우, 또는공백으로구분 <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <init-param> <param-name>contextconfiglocation</param-name> <param-value>/web-inf/server-service.xml /WEB-INF/dao-service.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 64

65 HandlerMapping Client 요청을처리할 Controller 를찾는역할 다양한 HandlerMapping 클래스를 Springframework 가제공하며 Spring 설정파일에 <bean> 으로등록하여설정한다. 종류 BeanNameUrlHandlerMapping bean 의이름과 url 을 mapping SimpleUrlHandlerMapping url pattern 들을 properties 로등록해처리 DefaultAnnotationHandlerMapping Annotation 기반 Controller 처리 65

66 HandlerMapping BeanNameUrlHandlerMapping 설정 <bean id= "handlermapping" class="org.springframework.web.servlet.handler.beannameurlhandlermapping"/> <bean name="/hello.do" class="controller.hellocontroller"/> <bean name="/welcome.do" class="controller.welcomecontroller"/> SimpleUrlHandlerMapping 설정 <bean id= "handlermapping" class="org.springframework.web.servlet.handler.simpleurlhandlermapping"> <property name="mappings"> <props> <prop key= /register.do">registercontoller</prop> <prop key= /delete.do >deletecontroller</prop> </props> </property> </bean> <!-- 컨트롤러 bean 으로등록 --> <bean name= registercontoller../> <bean name= deletecontroller./> 66

67 Controller 작성 Controller 종류 Controller (interface) AbstractController MultiActionController Annotation기반 Controller 위의 interface/class 를상속하여 Controller 작성한다.(Annotation 기반 Controller 제외 ) 67

68 AbstractController (1/2) 가장기본이되는 Controller 작성 AbstractController 상속한다. public ModelAndView handlerequestinternal (HttpServletRequest request, HttpServletResponse response) throws Exception 오버라이딩하여코드구현 ModelAndView 에 view 가사용할객체와 view 에대한 id 값을넣어생성후 return 68

69 AbstractController (2/2) public class HelloworldAbstractController extends AbstractController{ protected ModelAndView handlerequestinternal( HttpServletRequest request, HttpServletResponse response) throws Exception { //Model 호출 Business Logic 처리 //ModelAndView 를통해 view 로수행넘김 return new ModelAndView("hello","message", " 안녕 "); } } 69

70 MultiActionController (1/3) 하나의 Controller 에서여러개의요청처리지원 연관된 request 들을처리하는 controller 로직을하나의 controller 로묶을경우사용. 작성 MultiActionController 상속 client 의요청을처리할메소드구현 public [ModelAndView Map String void] 메소드이름 ( HttpServletRequest req, HttpServletResponse res [HttpSession Command]) [throws Exception]{} return type : ModelAndView, Map, void 중하나 argument : 1 번 - HttpServletRequest, 2 번 - HttpServletResponse 3 번 선택적이며 HttpSession 또는 Command or 3 번 HttpSession, 4 번 - Command 70

71 MultiActionController (2/3) MethodNameResolver 등록 역할 : 어떤메소드가클라이언트의요청을처리할것인지결정 Spring 설정파일에 <bean> 으로등록 controller에서는 property로주입받는다. 종류 ParameterMethodNameResolver : 요청 parameter로메소드이 름전송 InternalPathMethodNameResolver : url 마지막경로메소드이름으로사용 PropertiesMethodNameResolver : URL과메소드이름 mapping을 property로설정 71

72 MultiActionController (3/3) Controller class public class MemberController extends MultiActionController{ } public ModelAndView registermember(httpservletrequest request, HttpServletResponse response) throws Exception{ //Business Logic 구현 ModelAndView mv = new ModelAndView(); mv.setviewname("register_ok"); return new ModelAndView(); } <bean id="methodnameresolver" class="org.springframework.web.servlet.mvc.multiaction.parametermethodnameresolver"> <property name="paramname" value="mode"></property> </bean> <bean name= /member.do" class="controller.multiaction.membercontroller"> <property name="methodnameresolver"> <ref bean="methodnameresolver"/> </property> </bean> 호출 : 72

73 Annotation 기반 요청 URL 등록, 처리할요청방식지정 구문 RequestMapping( 요청 url ) RequestMapping(value= 요청 URL method= 요청방식 ) Controller 클래스에등록 Controller 메소드에등록 Controller 클래스스프링설정파일에등록 1. <bean> 을이용해등록 2. 자동스캔 <context:component-scan base-package= package /> 73

74 Annotation 기반 Controller Controller 메소드에서요청파라미터처리 Transfer Object(Command) 이용 요청파라미터와매칭되는이름의 property 를가진 TO 요청파라미터 name 을이용한매개변수사용 같은이름으로여러개값이넘어올경우 String[] Annotation 사용 속성 value : 요청파라미터이름설정 required : 필수여부. 안넘어오면 400오류발생. 기본 : false defaultvalue : 값이안넘어올경우설정할기본값 74

75 Annotation 기반 Controller Controller 메소드이용가능매개변수타입 HttpServletRequest HttpServletResponse HttpSession 요청파라미터연결변수 요청파라미터를설정할 Transfer Object 적용매개변수 name, required=false) Map, Model, ModelMap View 에전달할모델데이터설정시사용 75

76 Annotation 기반 Controller Controller 메소드설정가능 return type ModelAndView : View 정보와응답데이터설정 View에전달할값설정 Map Model View는요청 URL로결정됨 String : View의이름리턴 View 객체 void Controller 메소드내에서응답을직접처리시사용 76

77 ModelAndView (1/2) Controller 처리결과후응답할 view 와 view 에전달할값을저장. 생성자 ModelAndView(String viewname) : 응답할 view 설정 ModelAndView(String viewname, Map values) : 응답할 view 와 view 로전달할값들을저장한 Map 객체 ModelAndView(String viewname, String name, Object value) : 응답할 view 이름, view 로넘길객체의 name-value 주요메소드 setviewname(string view) : 응답할 view 이름을설정 addobject(string name, Object value) : view 에전달할값을설정 requestscope 에설정됨 addallobjects(map values) : view 에전달할값을 Map 에 name-value 로저장하여한번에설정 - requestscope 에설정됨 Redirect 방식전송 view 이름에 redirect: 접두어붙인다. ex) mv.setviewname( redirect:/welcome.html ); 77

78 ModelAndView (2/2) protected ModelAndView handlerequestinternal(httpservletrequest req, HttpServletResponse res) throws Exception{ //Business Logic 처리 ModelAndView mv = new ModelAndView(); mv.setviewname( /hello.jsp ); mv.addobject( greeting, hello world ); return mv; } 78

79 ViewResolver (1/3) Controller 가넘긴 view 이름을통해알맞은 view 를찾는역할 1. Controller 는 ModelAndView 객체에응답할 view 이름을넣어 return. 2. DispatchServlet 은 ViewResolver 에게응답할 view 를요청한다. 3. ViewResolver 는 View 이름을이용해알맞는 view 객체를찾아 DispatcherServlet 에게전달. ViewResolver Spring 설정파일에등록한다. 79

80 ViewResolver (2/3) Spring 설정파일에설정 <bean id= viewresolver class= org.springframework.web.servlet.view.internalresourceviewresolver > <property name= prefix value= /WEB-INF/jsp/ > <property name= suffix value=.jsp /> </bean> Controller ModelAndView mv = new ModelAndView(); mv.setviewname( hello ); 위의경우 /WEB-INF/jsp/hello.jsp 를찾는다. 80

81 ViewResolver (3/3) InternalResourceViewResolver JSP 나 HTML 등의내부자원을이용해뷰생성 InternalResourceView 를기본뷰로사용 BeanNameViewResolver 뷰의이름과동일한이름을가지는빈을 View 로사용 사용자정의 View 객체를사용하는경우주로사용 XmlViewResolver BeanNameViewResolver 와동일하나뷰객체를 Xml 파일에설정해놓는것이차이. Bean 등록시 location 프라퍼티에 xml 파일을지정 81

82 FileUpload - 파일업로드요청페이지 호출 JSP( 또는 HTML) 요청방식 : post <form enctype= multipart/form-data > input tag : <input type= file name= upfile /> name 속성의값은 upload 정보를저장할 TO(VO) 의 Attribute 와매칭된다. 여러개의파일을업로드할때 name 속성의값은이름 [0], 이름 [1] 형식으로작성 <input type= file name= upfile[0] /> <input type= file name= upfile[1] /> 82

83 FileUpload - Spring 설정파일 multipartresolver 빈으로등록 upload 를처리해주는 bean id/name 은반드시 multipartresolver 로등록 <bean id= multipartresolver class= org.springframework.web. multipart.commons. CommonsMultipartResolver /> Property defaultencoding 기본인코딩설정 maxuploadsize 업로드허용최대 size 를 byte 단위로지정. -1 은무제한 uploadtempdir 업로드파일일이저장될임시경로지정 maxinmemorysize 업로드파일을저장할최대메모리크기 83

84 FileUpload Controller 에서처리 Transfer Object 를통해받기 파일요청파라미터의이름과매칭되는 property 작성 파일의정보를저장할 property 는 MultipartFile 을통해받기 Controller 메소드의 MultipartFile 타입의매개변수사용 MultipartHttpServletRequest 이용 Controller 메소드의매개변수로 MultipartHttpServletRequest 를선언 주요메소드 getfilenames() : Iterator<String>- 업로드된파일명들조회 getfile(string name) : MultipartFile 업로드된파일정보조회 getfiles(string name):list<multipartfile>- 업로드된파일정보들조회 84

85 FileUpload - MultipartFile org.springframework.web.multipart.multipart File 업로드된파일정보를저장하는객체 getname() : String 요청파라미터의 name getoriginalfilename() : String upload 된파일명 getsize() : long 파일의크기 transferto(file dest) upload 된파일을특정경로로이동 isempty() : boolean upload 된파일이없으면 true getinputstream() : InputStream 업로드된파일과연결된 InputStream 리턴 85

86 ibatis 86

87 개요 JDBC 코드의패턴 Connection -> Statement -> 쿼리전송 -> 연결 close 모든 JDBC 코드는위의패턴을가진다. 이패턴을캡슐화하여 JDBC 코드를간편하게사용할수있도록 Framework 화가능 ibatis 란 SQL 실행결과를자바빈즈혹은 Map 객체에매핑해주는 Persistence 솔루션으로 SQL 을소스코드가아닌 XML 로따로분리해관리하도록지원 장점 SQL 문장과프로그래밍코드의분리 JDBC 라이브러리를통해매개변수를전달하고결과를추출하는일을간단히처리가능 자주쓰이는데이터를변경되지않는동안에임시보관 (Cache) 가능 트랜잭션처리제공 87

88 ibatis 설치 에서받는다. ibatis2.x.x 다운로드 88

89 ibatis 설치 압축을풀면 lib 디렉토리에 api가있다. API를 Application에설치 Standalone Application 어플리케이션 start 스크립트에클래스패스정의 java -cp ibatis jar:... MyMainClass Web Application WEB-INF/lib 에추가 주 ) 다른경로에추가하면설정파일을찾지못하는문제가발생할수있다. 89

90 ibatis Quick Start (1/3) ibatis SqlMap Config(sqlmap-config.xml) 작성 ibatis framework 에대한설정 <?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE sqlmapconfig PUBLIC "-//ibatis.apache.org//dtd SQL Map Config 2.0//EN" " <sqlmapconfig> <transactionmanager type="jdbc"> <datasource type="simple"> <property name="jdbc.driver" value= oracle.jdbc.driver.oracledriver" /> <property name="jdbc.connectionurl" /> <property name="jdbc.username" value= hr" /> <property name="jdbc.password" value= hr" /> </datasource> </transactionmanager> <sqlmap resource="user.xml" /> </sqlmapconfig> 90

91 ibatis Quick Start (2/3) SqlMap 파일작성 (User.xml) SQL 문을등록하는설정파일 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE sqlmap PUBLIC "-//ibatis.apache.org//dtd SQL Map 2.0//EN " <sqlmap namespace="user"> <typealias alias="user" type="myibatis.domain.user"/> <resultmap id="usermap" class="user"> <result property="userid" column="userid"/> <result property="password" column="password"/> <result property="name" column="name"/> <result property=" " column=" "/> <result property="usertype" column="usertype"/> </resultmap> <select id="selectallusers" resultmap="usermap"> select USER_ID as userid, PASSWORD as password, NAME as name, as from USER order by USER_ID ASC </select> </sqlmap> 91

92 ibatis Quick Start (3/3) ibatis Data Access Object 작성 UserIBatisDao.java package myibatis.dao import java.io.ioexception; import java.io.reader; import java.sql.sqlexception; import java.util.list; import com.ibatis.common.resources.resources; import com.ibatis.sqlmap.client.sqlmapclient; import com.ibatis.sqlmap.client.sqlmapclientbuilder; import myibatis.domain.user; public class UserIBatisDao { private static final String resource = "sqlmap-config.xml"; private SqlMapClient client; } public UserIBatisDao() { try { Reader reader = Resources.getResourceAsReader(resource); this.client = SqlMapClientBuilder.buildSqlMapClient(reader); } catch (IOException e) { throw new RuntimeException("SqlMapClient 생성중오류발생 ", e); } } public List<User> findallusers() { try { List<User> users = client.queryforlist("selectallusers", null); return users; } catch (SQLException e) { throw new RuntimeException(" 사용자조회중오류발생 ", e); } } 92

93 ibatis 실행흐름도 SqlMapConfig SqlMaps SqlMaps Sql Map 파일 SqlMapConfig : 전역정보설정파일 SqlMaps : SQL 문관련설정파일 MappedStatement : 설정된쿼리를실행하는 ibatis 객체 input : SQL 문실행시필요한값 output : select 실행결과 Input HashMap TO(VO) Literal Mapped Statement Output HashMap TO(VO) Literal Database 93

94 ibatis 설정파일 설정파일은 XML 기반으로작성 SqlMapConfig 전역설정위한파일 : ibatis Framework 가실행되는데필요한여러설정들을한다. Transaction 관리정보, DataSource 생성을위한설정정보, SqlMap 파일의위치등 SqlMap SQL 문을등록 SQL 문을실행하기위해필요한 input Data 와 Output Data 에대한설정을한다. 설정파일들은작성후 classpath 내저장한다. 94

95 SqlMapConfig 설정 (1/4) SQLMapConfig 설정파일 (SqlMapConfig.xml) <?xml version="1.0" encoding="euc-kr"?> <!DOCTYPE sqlmapconfig PUBLIC "-//ibatis.apache.org//dtd SQL Map Config 2.0//EN" " 전역설정옵션 <sqlmapconfig> <settings usestatementnamespaces="false" cachemodelsenabled="true"/> 트랜잭션관리 DataSource 설정 SqlMap 파일참조 <transactionmanager type="jdbc"> <datasource type="simple"> <property name="jdbc.driver" value= " DriverClassName" /> <property name="jdbc.connectionurl" value="url" /> <property name="jdbc.username" value="user" /> <property name="jdbc.password" value="password" /> </datasource> </transactionmanager> <sqlmap resource= "sample/config/sqlmap.xml" /> </sqlmapconfig> 95

96 SqlMapConfig 설정 (2/4) <typealias> 요소 설정파일에서사용할클래스의별칭 (alias) 설정 SqlMap 에서도설정가능 ibatis 는정의된 alias 로언제든지원래 type 에접근가능 SqlMapConfig 에설정하면모든 SqlMap 에서사용가능 <typealias alias= mto type= member.to.memberto /> Framework 에서미리정의하여제공하는 typealias Transaction manager : JDBC, JTA, EXTERNAL Data types : string, int, long, double, boolean, hashmap arraylist, object 등 Data source factory : SIMPLE, DBCP, JNDI 96

97 SqlMapConfig 설정 (3/4) <transactionmanager> 요소 Transaction Manager 타입설정 JDBC : 단순 JDBC 기반의 Transaction Manager 를제공함 JTA : application 이동작하는컨테이너기반의 Transaction Manager 를제공함 EXTERNAL : 트랜잭션관리를 ibatis 에서하지않음 <datasource> : ibatis 에서사용할 DataSource 를생성하는 DataSource Factory 지정 SIMPLE : ibatis 자체제공하는 DataSourceFactory 사용 DBCP : Jakarta Commons Database Connection Pool 구현함 JNDI : Naming 서버에등록된 DataSource 를사용함보통 Container 가제공하는것을사용 하위태그를이용하여필요한 property 들을설정한다. driver, url, 계정정보등 97

98 SqlMapConfig 설정 (4/4) <sqlmap> 요소 SQL 문을가지고있는설정파일인 SQL Map 파일의위치지정 resource 속성 : class path 상의 SQL Map 파일 여러파일지정가능 98

99 ibatis 를통한 SQL 문실행 ibatis의 JavaBean select insert update delete Parameter 매핑 Result 매핑 99

100 JavaBeans 기초 ibatis 의 Java property 접근 Property 구성 private instance variable 과 public setter, getter 메소드 private String name; public String getname(); public void setname(string name); property 타입이 boolean일경우 private boolean isstudent; public boolean isstudent(); public void setstudent(boolean isstudent); Beans 탐색 Java code anorder.getaccount().getusername() Dot 표기법 anorder.account.username anorder.getorderitem().get(0).getproductid() anorder.orderitem[0].productid anobject.getid() anobject.getname() anobject.id anobject.name 100

101 ibatis 를통한 SQL 실행 - 개요 Sql Map SQL 문설정, Input Data, Output Data 를설정하는 xml 기반설정파일 Sql Map 파일은 SqlMapConfig 에등록한다. SqlMapClient interface : SQL 문실행메소드를정의 package : com.ibatis.sqlmap.client SqlMapClientBuilder 를통해얻어온다. //ibatis Framework 가실행할때필요한 SqlMapConfig Reader reader = Resources.getResourceAsReader( config/sqlmapconfig.xml ); //SqlMapConfig 의내용을적용하여실행할 SqlMapClient 생성 SqlMapClient sqlmap = SqlMapClientBuilder.buildSqlMapClient(reader); Sql Map 에 SQL 문을등록하고프로그램에서는 SqlMapClient 의메소드를이용해등록한쿼리를실행시킨다. 101

102 Sql Map (1/3) 주요태그 SQL 문등록태그 태그명속성하위요소용도 <select> id, parameterclass, parametermap, resultclass, resultmap, cachemodel 모든 dynamic 요소 조회 <insert> id, parameterclass, parametermap 모든 dynamic 요소, selectkey 입력 <update> id, parameterclass, parametermap 모든 dynamic 요소수정 <delete> id, parameterclass, parametermap 모든 dynamic 요소삭제 외부 Parameter, Result 매핑설정 태그명속성하위요소용도 <parametermap> id, class <parameter> 외부 Parameter Map 설정의 Root 태그 <parameter> property, javatype, jdbctype, nullvalue N/A 하나의 Parameter Map 설정 <resultmap> id, class <result> 외부 Result Map 설정 <result> property, column, jdbctype, javatype, nullvalue N/A 하나의 Result Map 설정 102

103 Sql Map (2/3) 주요태그 SQL 문생성태그 태그명 속성 하위요소 용도 <sql> id 모든 dynamic 요소 재사용가능한 SQL문등록 <include> refid 모든 dynamic 요소 SQL등록태그에서 sql에등록한태그를재사용 <sql id="select"> select * from order </sql> <select id= selectorderbyid resultclass="map"> <include refid="select" /> where order_id = #orderid# </select> 103

104 Sql Map (3/3) member.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE sqlmap PUBLIC "-//ibatis.com//dtd SQL Map 2.0//EN" " <sqlmap namespace="member"> <typealias type="member.to.memberto" alias="mto"> <insert id="insertmember" parameterclass="mto"> INSERT INTO MEMBER (ID, PASSWORD, NAME, ADDRESS, MILEAGE) VALUES(#id#, #password#, #name#, #address#, #mileage#) </insert> <update id="updatemember" parameterclass="mto"> UPDATE MEMBER SET PASSWORD=#password#, NAME=#name#, ADDRESS=#address#, MILEAGE=#mileage# WHERE ID=#id# </update> <delete id="deletemember"> DELETE FROM MEMBER WHERE ID=#value# </delete> <select id="getmemberbyid" resultclass="mto"> SELECT ID, PASSWORD, NAME, ADDRESS, MILEAGE FROM MEMBER WHERE ID=#value# </select> </sqlmap> 104

105 Parameter mapping (1/3) Sql Map 에쿼리등록시세가지요소설정필요 SQL 문 Parameter : Input Data Select 문의경우 Result : Output Data Parameter Mapping Parameter : SQL 문에넣을값 인라인 Parameter, 외부 Parameter 매핑두가지방식이있다. 인라인 값과값을넣을위치를 SQL 안에설정 외부 parameter mapping SQL 문에는? 로설정하고넣을 parameter 연결은 SQL 문밖에서설정 SqlMapClient 의메소드를통해받은값과 SQL 문에값이들어갈곳을 Mapping 한다. SQL 문내 mapping 방법 #parameter name# $parameter name$ 인라인파라미터 parameter name» Transfer Object(TO, VO): getter 와 matching» Map : key 와 matching? 외부파라미터매핑 105

106 Parameter mapping (2/3) # 지시자로인라인 parameter 사용? 로바꾼뒤값을치환한다. PreparedStatement 형식 타입에맞게치환처리 (String의경우 처리 ) 값만치환가능 <select id="selectuser" resultmap="usermap"> select USER_ID as userid, PASSWORD as password, NAME as name, EMPLOYEE_NO as employeeno, as , PHONE_NUM as phonenumber, ZIP_CODE as zipcode, ADDRESS, GRADE as grade from USER where USER_ID = #value# </select>... where USER_ID = abc ; User user = (User)client.queryForObject("selectUser", "abc"); 106

107 Parameter mapping (3/3) $ 지시자로인라인 parameter 사용 전달받은값을바로치환한다. copy & paste 개념 String일경우 로감싸주어야한다. 값뿐만아니라키워드등쿼리문무엇이든치환가능 <select id="selectuser" resultmap="usermap"> select USER_ID as userid, PASSWORD as password, NAME as name, EMPLOYEE_NO as employeeno, as , PHONE_NUM as phonenumber, ZIP_CODE as zipcode, ADDRESS, GRADE as grade from USER where USER_NAME LIKE %$value$% </select>... where user.name like % 송 % ; List<User> allusers = client.queryforlist("selectallusers", 송 ); 107

108 Parameter 매핑 외부매핑 (1/2) Parameter 매핑의두가지방안 인라인매핑 SqlMap Mapping문내부에서바로기술함 매핑이복잡한경우명시적이지못함 외부매핑 외부에서정의됨 보다명시적임 인라인매핑과외부매핑은같이사용할수없다.? 와매칭되어값이할당된다. 인라인매핑의예 외부매핑의예 <insert id="createcategory" parameterclass="deptto"> insert into departments values( #deptid#, #deptname#, #managerid#,#loc.locationid# ) </insert> <parametermap class= deptto" id="deptparammap"> <parameter property="deptid"/> <parameter property="deptname"/> <parameter property="managerid"/> <parameter property="loc.locationid"/> </parametermap> <insert id= insert" parametermap="deptparammap" > INSERT INTO DEPARTMENTS VALUES(?,?,?,?) </insert> 108

109 Parameter 매핑 외부매핑 (2/2) 외부 Parameter 매핑 속성 property javatype jdbctype 설명 매핑문에전달할 JavaBean property 명칭또는 Map value 의 key. 들어갈이름을매핑문에필요한만큼반복해서정의할수있음. 예 ) update 문에서 set 절과 where 절에동일한이름이반복적으로들어갈수있음. 세팅될 parameter 의 Java property 타입을명시적으로정의 세팅될 parameter 의데이터베이스타입을명시적으로정의예 ) Java 타입이 Date( java.util.date) 인경우 jdbctype 을 DATE 인지 DATETIME 인지명시할필요가있음 nullvalue nullvalue 에명시된값이 JavaBean property 에서넘어오면 null 값을넣어준다. 외부 Parameter 매핑이유용한경우 인라인 Parameter 매핑이잘동작하지않을경우 성능을향상시킬경우 명시적매핑을할경우 109

110 Result 매핑 (1/3) 명시적 Result 매핑 <resultmap> : 하나의 resultclass 에대한설정 속성 : id, class <result> : 하나의 property 와 resultset 의 Column 매핑 result 태그 속성 property column 설명 결과객체의 JavaBean property 또는 Map 내용 JDBC ResultSet 의 column columnindex ResultSet 의 column 명대신 index 를주어결과값매핑이가능. 약간의성능향상이있으며필수사항은아님. jdbctype ResultSet column 의타입을명시함. java.util.date 의경우해당되는 jdbctype 이여러가지 (DATE, DATETIME) 이므로정확한매핑을위해명시하는것이좋음. JDBC driver 에따라정의할필요가없는것도있음. javatype 세팅될 Java 타입을명시함. nullvalue select 데이터베이스에서 null 이넘어온경우 null 을대신할 default 값지정 객체관계를표현하며복잡한 property 타입을로드할수있음들어갈값은반드시다른매핑문의이름이어야함. 110

111 Result 매핑 (2/3) Primitive result ibatis 는 primitive 형태의결과를허용하지않음 (int, long, double,..) Wrapping 된형태의타입을리턴 (Integer, Long, Double,..) <select id= getallordercount" resultclass= int"> select count(*) as cnt from order </select> Integer allcount = (Integer)client.queryForObject( getallordercount ); JavaBean(TO) 타입으로 Wrapping 할경우 primitive 형태의결과를얻을수있음 public class ResultTO{ private int ordercount; public int getordercount() { return ordercount; } public void setordercount(int ordercount) { this.ordercount = ordercount; } } <resultmap id="primitiveresultmapexample" class= ResultTO > <result property="ordercount" column= cnt" /> </resultmap> 111

112 Result 매핑 (3/3) JavaBean 과 Map Result 의장단점 Bean 방식장점단점 성능향상컴파일타임의이름체크 IDE 에서 Refactoring 지원가능 Type casting 이적음 get, set 메소드필요 Map 코드량이적음 느리다컴파일타임체크불가런타임오류가많음 Refactoring 지원이없음 112

113 SELECT 구문실행 (1/4) SqlMap : <select> 태그이용 속성 id : 프로그램에서호출할이름 resultclass, resultmap : SELECT 문실행결과를담을객체 parameterclass, parametermap : PARAMETER 를받아올객체 SqlMapClient queryforobject() : 0 또는 1 개의 row 를가져올때사용 unique 한값으로조회시 Object queryforobject(string id) throws SQLException; Object queryforobject(string id, Object parameter) throws SQLException; Object queryforobject(string id, Object parameter, Object result) throws SQLException; 첫번째메소드 : parameter 없이조회 두번째메소드 : SQL Map 에정의된 select 문 id 와해당파라미터로사용 두번째메소드 : 결과결과를담을객체를넣음. no-argument 생성자가없는 resultclass 를사용해야하는경우사용 1 개이상의 row 가리턴된경우 Exception 발생 113

114 SELECT 구문실행 (2/4) SqlMapClient queryforlist() 메소드 1개이상의 row가리턴될경우사용 결과를 List로리턴함 select 결과의 1개의 row resultclass의객체 resultclass 객체들 List List queryforlist(string id) throws SQLException; List queryforlist(string id, Object parameter) throws SQLException; List queryforlist(string id, Object parameter, int skip, int max) throws SQLException; 첫번째, 두번째메소드 : queryforobject 와동일 세번째메소드 : DB 에서가져온전체 row 중일부만사용하고싶은경우사용 예 ) DB 에서 100 건을가져올때이중앞의 10 건만취하고싶으면 skip=0, max=10 114

115 SELECT 구문실행 (3/4) queryformap() 메소드 여러건을 Map 형태로리턴함 Map queryformap(string id, Object parameter, String key) throws SQLException; Map queryformap(string id, Object parameter, String key, String value) throws SQLException; 첫번째메소드 : key map 의 key 값으로들어갈 property 또는 key 를입력 결과 Map 의 value 는 resultclass 에지정한클래스의객체가들어간다. 두번째메소드 : key map 의 key 값으로들어갈 property 또는 key 를입력 결과 Map 의 value 는지정한 property 또는 key 의데이터만들어간다. queryformap() 사용예 Map accountmap = sqlmap.queryformap( selectaccountlist,null,"accountid"); Map accountmap = sqlmap.queryformap( selectaccountlist,null,"accountid", "ownername"); 115

116 SELECT 구문실행 결과매핑 (4/4) 자동 Result Map select 문실행결과를자동으로객체에매핑가능함 단일 column 매핑 count(id) 값이 Integer 타입으로자동매핑된다. <select id= selectaccountcnt resultclass="int"> select count(accountid) from Account </select> Integer cnt = (Integer) client.queryforobject( selectaccountcnt ); 다중 column 매핑 select 문의 column 명과결과객체의 Bean property 명이일치해야함 <select id="selectaccountlist" resultclass= AccountTO > select account_id as id, owner_name as name, balance from account </select> public class AccountTO{ setid(string id){} setname(string name){} setbalance(long balance){} } 116

117 INSERT SqlMap : <insert> 태그사용 속성 id : 프로그램에서호출할이름 parameterclass, parametermap : PARAMETER 를받아올객체 Sub tag <selectkey> : insert 시사용할파라미터를조회할경우사용 속성 : resultclass, keyproperty SqlMapClient insert() 사용 Object insert(string id) throws SQLException; Object insert(string id, Object parameter) throws SQLException; return value : Object <selectkey> 를통해조회한 result 객체 117

118 UPDATE SqlMap : <update> 태그사용 속성 id : 프로그램에서호출할이름 parameterclass, parametermap : PARAMETER 를받아올객체 SqlMapClient update() 사용 int update (String id) throws SQLException; int update(string id, Object parameter) throws SQLException; return value : int update 가적용된 record 개수 118

119 DELETE SqlMap : <delete> 태그사용 속성 id : 프로그램에서호출할이름 parameterclass, parametermap : PARAMETER 를받아올객체 SqlMapClient delete() 사용 int delete(string id) throws SQLException; int delete(string id, Object parameter) throws SQLException; return value : int 삭제가적용된 record 개수 119

120 Dynamic SQL 개요 Dynamic 태그 120

121 개요 언제사용하는가? 하나의 sql 태그에서쿼리구문을조건에따라동적으로만들때사용 예를들어 where 절의비교구문이파라미터객체의조건에따라달라질경우 예 ) 조회시제약조건에사용할검색키워드가있을수도 null 일수도있을경우. name=#name# 또는 name IS NULL <select id= selectmember" parameterclass= to.memberto" resultclass= to.memberto"> SELECT * FROM member <dynamic prepend="where "> <isnull property="name"> name IS NULL </isnull> <isnotnull property="name"> writer =#name# </isnotnull> </dynamic> </select> 파라미터로넘어온 wirter 에값이없는경우 (null 인경우 ) 파라미터넘어온 wirter 에값이있는경우 121

122 Dynamic 태그 Dynamic 태그종류및속성 dynamic : Root 태그 4 가지카테고리 binary, unary, parameter, iterate 공통속성 prepend, open, close WHERE 구문을앞에추가 <dynamic prepend="where "> <isnotempty property="y">y=#y#</isnotempty> <isnotnull property="x" removefirstprepend="true" prepend= AND" open="(" close=")"> 앞뒤를 ( ) 으로감 <isnotempty property="x.a" prepend="or">a=#x.a#</isnotempty> 싼다. <isnotempty property="x.b" prepend="or">a=#x.b#</isnotempty> <isnotempty property="x.c" prepend="or">a=#x.c#</isnotempty> </isnotnull> </dynamic> prepend 가첫번째로 Add 되는경우는생략한다. 122

123 Dynamic 태그 <dynamic> 태그 Dynamic 태그의가장상위태그 (Root 태그 ) 다른 dynamic 태그안에포함될수없음 접두 / 접미구문을위한수단제공 (prepend, open, close) prepend ( 옵션 ) open ( 옵션 ) close ( 옵션 ) 맨앞에접두구문을붙인다. ( 예 : WHERE ) Body 에내용이없을경우접두구문은생략된다. Body 의내용앞에붙여짐. Body 의내용이없을경우생략된다. prepend 와동시에정의될경우 prepend 다음에나타난다. Body 의내용뒤에붙여짐. Body 의내용이없을경우생략된다. 123

124 Dynamic 태그 Binary 태그 주어진 Parameter 객체간의 property 값을비교 태그의조건이충족되는경우 Body내용이나타난다. 태그속성 property( 필수 ) Parameter 객체의 property. comparevalue 또는 compareproperty 에서비교하는데쓰인다. prepend( 옵션 ) 맨앞에접두구문을붙인다. 이구문이생략되는경우 1. Body 의내용이없는경우 2. 부모태그속성이 removefirstprepend= true 이고현재태그가부모 Body 의첫번째요소인경우 open( 옵션 ) Body 의내용앞에붙여짐. Body 의내용이없을경우생략된다. prepend 와동시에정의될경우 prepend 다음에나타난다. close( 옵션 ) Body 의내용뒤에붙여짐. Body 의내용이없을경우생략된다. removefirstprepend( 옵션 ) 첫번째자식태그의 prepend 를생략시킴 compareproperty property 와비교할 property 이름 comparevalue property 속성에의해비교되는값 ( 상수 ) 124

125 Dynamic 태그 Binary 태그 ( 계속 ) Binary 태그종류 <isequal> <isnotequal> <isgreaterthan> <isgreaterequal> <islessthan> <islessequal> property 속성과 compareproperty/comparevalue 속성이같은지비교 property 속성과 compareproperty/comparevalue 속성이다른지비교 property 속성이 compareproperty/comparevalue 속성보다큰지비교 property 속성이 compareproperty/comparevalue 속성보다크거나같은지비교 property 속성이 compareproperty/comparevalue 속성보다작은지비교 property 속성이 compareproperty/comparevalue 속성보다작거나같은지비교 125

126 Dynamic 태그 Binary 태그 ( 계속 ) Binary 태그예제 <select id="getshippingtype" parameterclass="cartto" resultclass="shippingto"> SELECT * FROM Shipping <dynamic prepend="where "> <isgreaterequal property="weight" comparevalue="100"> shippingtype='freight' </isgreaterequal> <islessthan property="weight" comparevalue="100"> shippingtype='standard' </islessthan> </dynamic> </select> CartTO.getWeight() >= 100 인지체크 CartTO.getWeight() < 100 인지체크 126

127 Dynamic 태그 Unary 태그 비교를수행하지않고 Bean property 상태를체크한다. 태그의조건이충족되는경우 Body내용이나타남 Unary 태그속성 property( 필수 ) 상태를체크하기위한 Parameter 객체의 property prepend( 옵션 ) 맨앞에접두구문을붙인다. 이구문이생략되는경우 1. Body 의내용이없는경우 2. 부모태그속성이 removefirstprepend= true 이고현재태그가부모 Body 의첫번째요소인경우 open( 옵션 ) Body 의내용앞에붙여짐. Body 의내용이없을경우생략된다. prepend 와동시에정의될경우 prepend 다음에나타난다. close( 옵션 ) Body 의내용뒤에붙여짐. Body 의내용이없을경우생략된다. removefirstprepend( 옵션 ) 첫번째자식태그의 prepend 를생략시킴 127

128 Dynamic 태그 Unary 태그 ( 계속 ) Unary 태그종류 <ispropertyavailable> 특정 property 가존재하는지체크. Map 의경우 key 가존재하는지체크함. <isnotpropertyavailable> 특정 property 가존재하지않는지체크. Map 의경우 key 가존재하지않는지체크함. <isnull> 특정 property가 null인지체크. <isnotnull> 특정 property가 null이아닌지체크. <isempty> 특정 property가 null이거나비어있는지체크. <isnotempty> 특정 property가 null이아니고비어있지않는지체크. <select id="getproducts" parameterclass="product" resultclass="product"> SELECT * FROM Products <isnotempty property="producttype"> producttype=#producttype# </isnotempty> </select> Product.getProductType!= null 이고 Product.getProductType.length() > 0 인지체크 128

129 Dynamic 태그 Parameter 태그 Parameter 가매핑문에들어왔는지체크하는태그 태그속성 : prepend, open, close, removefirstprepend 태그종류 <isparameterpresent> Parameter 가존재하는지체크 <isnotparameterpresent> Parameter 가존재하지않는지체크 <select id="getproducts" resultclass="product"> SELECT * FROM Products <isparameterpresent prepend="where "> <isnotempty property="producttype"> producttype=#producttype# </isnotempty> </isparameterpresent> </select> 이 select 매핑문에들어오는어떤 Parameter 든지존재하는지체크 129

130 Dynamic 태그 <iterate> 태그 Collection 형태의 property로 SQL문의반복적인구간생성 각각의구간은 conjunction 속성으로분리됨 태그속성 : property( 필수 ), prepend, open, close, conjunction, removefirstprepend conjunction 반복되는 SQL 구문사이에구분자로들어감 ( 예 :, ) <select id="getproducts" parameterclass="product" resultclass="product"> SELECT * FROM Products <dynamic prepend="where > <iterate property= producttype" open="(" close=") conjunction="or" > producttype=#producttype[]# </iterate> </dynamic> </select> Product 의 Collection 형태의 property 반복구간이 OR 로구분됨 130

131 Transaction 관리 131

132 ibatis Transaction 관리 Auto Transaction Local Transaction 132

133 Auto Commit ibatis 의자동트랜잭션지원 Statement 를수행하기만해도적용됨 별다른설정이없음 public void runstatementsusingautomatictransactions() { SqlMapClient sqlmapclient = SqlMapClientConfig.getSqlMapClient(); Person p = (Person) sqlmapclient.queryforobject("getperson", new Integer(9)); p.setlastname("smith"); sqlmapclient.update("updateperson", p); } 133

134 Local Transaction 가장일반적인형태의 Transaction JDBC Transaction Manager 사용 sqlmap-config.xml 에설정 <transactionmanager type="jdbc"> <datasource type="simple"> <property /> <property /> <property /> </datasource> </transactionmanager> Application Start Commit End Database Local 트랜잭션 Manager 설정 134

(Microsoft PowerPoint - spring_ibatis.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - spring_ibatis.ppt [\310\243\310\257 \270\360\265\345]) 중소기업직업훈련컨소시엄 Spring & Ibatis 프레임워크과정 11.8.27 ~ 11.10.15 한국소프웨어기술진흥협회 (KOSTA) 1 Web Application 설계방식 모델 1 설계방식 모델 2 설계방식 2 모델 1 설계방식 (1/2) 모델 1 개요 JSP 만이용하여개발하는경우 JSP + Java Bean을이용하여개발하는경우 Model2의 Controller

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

Web Service Computing

Web Service Computing Spring MVC 2015 Web Service Computing Request & Response HTTP(Hyper-Text Transfer Protocol) 웹서버가하는일은요청 (Request) 과응답 (Response) 의연속이다. 1) 브라우저에 www.google.co.kr 을입력한다면 2) 구글서버에페이지를요청하는것이고 3) 화면이잘나타난다면구글서버가응답을한것이다.

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

<4D F736F F F696E74202D20C1A632C8B8C7D1B1B9BDBAC7C1B8B5BBE7BFEBC0DAB8F0C0D32D496E E D56432E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A632C8B8C7D1B1B9BDBAC7C1B8B5BBE7BFEBC0DAB8F0C0D32D496E E D56432E BC8A3C8AF20B8F0B5E55D> Inside Spring Web MVC 안영회 ahnyounghoe@gmail.com 차례 MVC 개요와오해 Spring Web MVC 개요 Demo 로이해하는 Spring Web MVC 대표적인컨트롤러활용 정리 한국 스프링 사용자 모임 MVC 개요와 오해 한국 스프링 사용자 모임 MVC 개요 MVC 에대한오해 컨트롤러는서블릿이다! 컨트롤러는액션이다! 비즈니스로직은컨트롤러다!

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

슬라이드 1

슬라이드 1 7. [ 실습 ] 예제어플리케이션개발 1. 실습개요 2. 프로젝트환경구성 3. 기본환경설정 4. 예제어플리케이션개발 5. 참조 - 539 - 1. 실습개요 (1/4) 7. [ 실습 ] 예제어플리케이션개발 스프링기반의 EGOV 프레임워크를사용하여구현된예제어플리케이션구현을통하여 Presentation Layer와 Business Layer의연계를살펴본다. 예제어플리케이션구현기능

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

< 목차 > 1. Data Access Service 개요 (ibatis 활용 ) 3. DBIO 소개

< 목차 > 1. Data Access Service 개요 (ibatis 활용 ) 3. DBIO 소개 전자정부표준프레임워크 Data Access Service 소개 2011-02-23 오픈커뮤니티김영우커미터 < 목차 > 1. Data Access Service 개요 (ibatis 활용 ) 3. DBIO 소개 Contents 1. Data Access Service 개요 1-1. 데이터처리레이어란? 1-2. 데이터처리레이어구성요소 1-3. Data Access

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Intro to Servlet, EJB, JSP, WS

Intro to Servlet, EJB, JSP, WS ! Introduction to J2EE (2) - EJB, Web Services J2EE iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

KYO_SCCD.PDF

KYO_SCCD.PDF 1. Servlets. 5 1 Servlet Model. 5 1.1 Http Method : HttpServlet abstract class. 5 1.2 Http Method. 5 1.3 Parameter, Header. 5 1.4 Response 6 1.5 Redirect 6 1.6 Three Web Scopes : Request, Session, Context

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가 혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

10.ppt

10.ppt : SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL

More information

(jpetstore \277\271\301\246\267\316 \273\354\306\354\272\270\264\302 Spring MVC\277\315 iBatis \277\254\265\277 - Confluence)

(jpetstore \277\271\301\246\267\316 \273\354\306\354\272\270\264\302 Spring MVC\277\315 iBatis \277\254\265\277 - Confluence) 8 중 1 2008-01-31 오전 12:08 오픈소스스터디 jpetstore 예제로살펴보는 Spring MVC와 ibatis 연동 Added by Sang Hyup Lee, last edited by Sang Hyup Lee on 1월 16, 2007 (view change) Labels: (None) 지금까지 Spring MVC 를셋팅하는과정에서부터하나의

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

Spring Data JPA Many To Many 양방향 관계 예제

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

iBATIS-SqlMaps-2-Tutorial

iBATIS-SqlMaps-2-Tutorial ibatis SQL Maps 튜토리얼 For SQL Maps Version 2.0 June 17, 2004 번역 : 이동국 (fromm0@gmail.com) 오타및오역은위메일주소로보내주시기바랍니다. 1 소개 이튜토리얼은 SQL Maps 의전형적인사용법을설명한다. 각각의주제에대해서좀더상세한정보는 http://www.ibatis.com 에 서얻을수있는 SQL Maps

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

파워포인트 템플릿

파워포인트 템플릿 ibizsoftware 정호열차장 ( 표준프레임워크오픈커뮤니티커미터 ) Agenda 1. ibatis 와 Hibernate 의개념및특징 2. Hibernate 와 JPA 쿼리종류 3. ibatis 와 Hibernate 동시사용을위한 Transaction 처리방안 4. @EntityListeners 활용방법 Agenda 5. Hibernate 사용시 Dynamic

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

Microsoft PowerPoint - ibatis.pptx

Microsoft PowerPoint - ibatis.pptx Sustainability Solu 작성자 : 박찬연 Ibatis (2 nd ) 박찬연 () 2008. 04. 29 목차 소개 datasource sqlmap 트렌젝션 배치 SqlMapClient 로깅 SimpleDataSource ScriptRunner 2 소개 SQL Maps 프레임워크는관계형데이터베이스에접근할때필요한자바코드를현저하게줄일수있도록도와줍니다.

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

J2EE Concepts

J2EE Concepts ! Introduction to J2EE (1) - J2EE Servlet/JSP/JDBC iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

2장 변수와 프로시저 작성하기

2장  변수와 프로시저 작성하기 Chapter. RequestDispatcher 활용 요청재지정이란? RequestDispatcher 활용 요청재지정구현예제 Chapter.9 : RequestDispatcher 활용 1. 요청재지정이란? 클라이언트로부터요청받은 Servlet 프로그램이응답을하지않고다른자원에수행흐름을넘겨다른자원의처리결과를대신응답하는것또는다른자원의수행결과를포함하여응답하는것을요청재지정이라고한다.

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information

신림프로그래머_클린코드.key

신림프로그래머_클린코드.key CLEAN CODE 6 11st Front Dev. Team 6 1. 2. 3. checked exception 4. 5. 6. 11 : 2 4 : java (50%), javascript (35%), SQL/PL-SQL (15%) : Spring, ibatis, Oracle, jquery ? , (, ) ( ) 클린코드를 무시한다면 . 6 1. ,,,!

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

교육2 ? 그림

교육2 ? 그림 Interstage 5 Apworks EJB Application Internet Revision History Edition Date Author Reviewed by Remarks 1 2002/10/11 2 2003/05/19 3 2003/06/18 EJB 4 2003/09/25 Apworks5.1 [ Stateless Session Bean ] ApworksJava,

More information

슬라이드 1

슬라이드 1 Spring Framework 3.X 오문정강사 (muffle@hanmail.net) 2013. 1. Spring3- Oh Moon Jeong - 1-1 레이어 vs. 티어 레이어 논리적분할, 단방향 티어 -- 물리적분할, 양방향 Spring3- Oh Moon Jeong - 2-2 Java EE Java 2 Platform, Enterprise Edition

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Spring

Spring Spring MVC 프로젝트생성 2015 Web Service Computing 일반적인스프링의정의 스프링의정의 자바엔터프라이즈개발을편하게해주는오픈소스경량급애플리케이션프레임워크 스프링의기원 로드존슨 (Rod Johnson) 이라는유명 J2EE 개발자가출간한 Expert One-on- One J2EE Design and Development 이라는제목의책에소개된예제샘플

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 1,..... @ 1 Green Project 1991 Oak Java 1995. 5 December '90 by Patrick Naughton, Mike Sheridan and James Gosling Embedded in various consumer electronic device 1992. 9. 3 Star 7 1993 www portability

More information

歯JavaExceptionHandling.PDF

歯JavaExceptionHandling.PDF (2001 3 ) from Yongwoo s Park Java Exception Handling Programming from Yongwoo s Park 1 Java Exception Handling Programming from Yongwoo s Park 2 1 4 11 4 4 try/catch 5 try/catch/finally 9 11 12 13 13

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 2012 년자바카페 OPEN 세미나 주제 : Spring 프레임워크중요구성원리 2012. 6. 16 Today Story 1. 티어와레이어 2. 웹프로그래밍과엔터프라이즈프로그래밍 3. MVC 모델과웹개발의흐름 4. Spring 3대구성원리와디자인패턴 5대원리 5. AJAX와데이터처리 Today Story 1. 티어와레이어 2. 웹프로그래밍과엔터프라이즈프로그래밍

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 한국성서대학교컴퓨터소프트웨어학과 BoostCourse (Full-Stack Developer) 김석래 예약서비스 기본제공페이지 Spring Framework 시스템설정 (pom.xml) Pom.xml Spring DB Servlet JSON 아직확실히필요한지알수없음 dbcp MySQL DTO DTO DAO Controller Service View Config

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

중간고사

중간고사 중간고사 담당교수 : 단국대학교응용컴퓨터공학박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호 (4자리숫자 ) 를기입하면성적공고시학번대신암호를사용할것임. 1. JSP 란무엇인가? 간단히설명하라.

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

14-Servlet

14-Servlet JAVA Programming Language Servlet (GenericServlet) HTTP (HttpServlet) 2 (1)? CGI 3 (2) http://jakarta.apache.org JSDK(Java Servlet Development Kit) 4 (3) CGI CGI(Common Gateway Interface) /,,, Client Server

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

슬라이드 1

슬라이드 1 전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

<property name="configlocation" value="classpath:/egovframework/sqlmap/example/sql-map-config.xml"/> <property name="datasource" ref="datasource2"/> *

<property name=configlocation value=classpath:/egovframework/sqlmap/example/sql-map-config.xml/> <property name=datasource ref=datasource2/> * 표준프레임워크로구성된컨텐츠를솔루션에적용 1. sample( 게시판 ) 프로젝트생성 - egovframe Web Project next generate example finish 2. 프로젝트추가 - 프로젝트 Import 3. 프로젝트에 sample 프로젝트의컨텐츠를추가, 기능동작확인 ⓵ sample 프로젝트에서 프로젝트로복사 sample > egovframework

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 웹서버프로그래밍 2 JSP 개요 01. JSP 개요 (1) 서블릿 (Servlet) 과 JSP(Java Server Page) 서블릿은자바를이용한서버프로그래밍기술 초기웹프로그래밍기술인 CGI(Common Gateway Interface) 를대체하기위해개발되었으나, 느린처리속도, 많은메모리요구, 불편한화면제어등의한계로 PHP, ASP 등서버스크립트언어등장 JSP

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

Data Provisioning Services for mobile clients

Data Provisioning Services for mobile clients 4 장. JSP 의구성요소와스크립팅요소 제 4 장 스크립팅요소 (Scripting Element) 1) 지시문 (Directive) 1. JSP 구성요소소개 JSP 엔진및컨테이너, 즉 Tomcat 에게현재의 JSP 페이지처리와관련된정보를전달하는목적으로활용 (6 장 )

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

JavaGeneralProgramming.PDF

JavaGeneralProgramming.PDF , Java General Programming from Yongwoo s Park 1 , Java General Programming from Yongwoo s Park 2 , Java General Programming from Yongwoo s Park 3 < 1> (Java) ( 95/98/NT,, ) API , Java General Programming

More information

Spring 정의 2012 년 1 월 31 일화요일 오젂 9:17 1. 개요 1.1. 목적 수많은프로젝트에서프레임워크나아키텍체에대한관심없이대부분의개발을개발자의능력에젂담시키는것이일반적이다. 이는프로젝트의위험요소를증가시킬뿐만아니라개발완료후유지보수비용을증가시킴으로써추가적인비

Spring 정의 2012 년 1 월 31 일화요일 오젂 9:17 1. 개요 1.1. 목적 수많은프로젝트에서프레임워크나아키텍체에대한관심없이대부분의개발을개발자의능력에젂담시키는것이일반적이다. 이는프로젝트의위험요소를증가시킬뿐만아니라개발완료후유지보수비용을증가시킴으로써추가적인비 Spring 정의 2012 년 1 월 31 일화요일 오젂 9:17 1. 개요 1.1. 목적 수많은프로젝트에서프레임워크나아키텍체에대한관심없이대부분의개발을개발자의능력에젂담시키는것이일반적이다. 이는프로젝트의위험요소를증가시킬뿐만아니라개발완료후유지보수비용을증가시킴으로써추가적인비용부담을초래할뿐더러안정성에도문제가되곤한다. 이에본내용은 Spring Framework를통해앞에서의문제점들을해결할수있는데초점을맞췄으며,

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

4 주차 - SPRING 환경설정및구현 Spring 기반의웹프로젝트를구성하고싶어요 T^T Spring 기반의웹환경구축 1. web.xml 수정으로 Spring 을설정하는방법 2. eclipse Spring Plug-In 을활용한템플릿프로젝트자동구성필수는아니지만해놓으면편

4 주차 - SPRING 환경설정및구현 Spring 기반의웹프로젝트를구성하고싶어요 T^T Spring 기반의웹환경구축 1. web.xml 수정으로 Spring 을설정하는방법 2. eclipse Spring Plug-In 을활용한템플릿프로젝트자동구성필수는아니지만해놓으면편 4 주차 - SPRING 환경설정및구현 Spring 기반의웹프로젝트를구성하고싶어요 T^T Spring 기반의웹환경구축 1. web.xml 수정으로 Spring 을설정하는방법 2. eclipse Spring Plug-In 을활용한템플릿프로젝트자동구성필수는아니지만해놓으면편리한것들 1. slf4j 를활용한 Logger 생성을편리하게해보자 2. AOP 설정 JDBC

More information

thesis

thesis ( Design and Implementation of a Generalized Management Information Repository Service for Network and System Management ) ssp@nile nile.postech.ac..ac.kr DPE Lab. 1997 12 16 GMIRS GMIRS GMIRS prototype

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드] GUI 설계 6 주차 DB 연동김문정 tops@yd.ac.kr 강의순서강의전환경 JDK 설치및환경설정톰캣설치및환경설정이클립스 (JEE) 설치및환경설정 MySQL( 드라이버 ) 설치및커넥터드라이브연결 DB 생성 - 계정생성이클립스에서 DB에연결서버생성 - 프로젝트생성 DB연결테이블생성및등록 2 MySQL 설치확인 mysql - u root -p MySQL 에데이터베이스추가

More information

I. Introduction... 1 II. Jdbc Support 구현배경 사용자요구사항 p6spy Architecture Architecture InjectionPa

I. Introduction... 1 II. Jdbc Support 구현배경 사용자요구사항 p6spy Architecture Architecture InjectionPa Anyframe Jdbc Support Plugin Version 1.1.0 저작권 2007-2014 삼성 SDS 본문서의저작권은삼성 SDS 에있으며 Anyframe 오픈소스커뮤니티활동의목적하에서자유로운이용이가능합니다. 본문서를복제, 배포할경우에는저작권자를명시하여주시기바라며본문서를변경하실경우에는원문과변경된내용을표시하여주시기바랍니다. 원문과변경된문서에대한상업적용도의활용은허용되지않습니다.

More information

No Slide Title

No Slide Title J2EE J2EE(Java 2 Enterprise Edition) (Web Services) :,, SOAP: Simple Object Access Protocol WSDL: Web Service Description Language UDDI: Universal Discovery, Description & Integration 4. (XML Protocol

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

04장

04장 20..29 1: PM ` 199 ntech4 C9600 2400DPI 175LPI T CHAPTER 4 20..29 1: PM ` 200 ntech4 C9600 2400DPI 175LPI T CHAPTER 4.1 JSP (Comment) HTML JSP 3 home index jsp HTML JSP 15 16 17 18 19 20

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

FileMaker 15 ODBC 및 JDBC 설명서

FileMaker 15 ODBC 및 JDBC 설명서 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker, Inc... FileMaker.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture3-2 Malware Analysis #3-2 Agenda 안드로이드악성코드분석 악성코드분석 안드로이드악성코드정적분석 APK 추출 #1 adb 명령 안드로이드에설치된패키지리스트추출 adb shell pm list packages v0nui-macbook-pro-2:lecture3 v0n$

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

12-file.key

12-file.key 11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 왜생겼나요..? : 절차지향언어가가진단점을보완하고다음의목적을달성하기위해..! 1. 소프트웨어생산성향상 객체지향소프트웨어를새로만드는경우이미만든개체지향소프트웨어를상속받거나객체를 가져다재사용할수있어부분수정을통해소프트웨어를다시만드는부담줄임. 2. 실세계에대한쉬운모델링 실세계의일은절차나과정보다는일과관련된많은물체들의상호작용으로묘사. 캡슐화 메소드와데이터를클래스내에선언하고구현

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information