슬라이드 1

Similar documents
슬라이드 1

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

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

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

Web Service Computing

Spring Boot/JDBC JdbcTemplate/CRUD 예제

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

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

<4D F736F F F696E74202D20C1A632C8B8C7D1B1B9BDBAC7C1B8B5BBE7BFEBC0DAB8F0C0D32D496E E D56432E BC8A3C8AF20B8F0B5E55D>

(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)

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

슬라이드 1

슬라이드 1

Spring Boot

Microsoft Word - src.doc

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

DocsPin_Korean.pages

Intro to Servlet, EJB, JSP, WS

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Spring

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

어댑터뷰

파워포인트 템플릿

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

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

중간고사

KYO_SCCD.PDF

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

쉽게 풀어쓴 C 프로그래밊

PowerPoint 프레젠테이션

Interstage5 SOAP서비스 설정 가이드

슬라이드 1

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

ibmdw_rest_v1.0.ppt

10.ppt

JavaGeneralProgramming.PDF

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

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

교육2 ? 그림

Facebook API

PowerPoint 프레젠테이션

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

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

내장서버로사용. spring-boot-starter-data-jpa : Spring Data JPA 사용을위한설정 spring-boot-devtools : 개발자도구를제공, 이도구는응용프로그램개발모드에서유 용한데코드가변경된경우서버를자동으로다시시작하는일들을한다. spri

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

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

PowerPoint 프레젠테이션

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

NoSQL

rmi_박준용_final.PDF

본 강의에 들어가기 전

요약 1

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

thesis

뇌를 자극하는 JSP & Servlet 슬라이드

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

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint - 10Àå.ppt

슬라이드 1

교육자료

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

Microsoft PowerPoint - 04-UDP Programming.ppt

슬라이드 1

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

Network Programming

서블릿의라이프사이클 뇌를자극하는 JSP & Servlet

Spring 3의 JSR 303 지원

Microsoft PowerPoint - aj-lecture7.ppt [호환 모드]

PowerPoint Presentation

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

PowerPoint Template

FileMaker 15 ODBC 및 JDBC 설명서

Dialog Box 실행파일을 Web에 포함시키는 방법

슬라이드 1

DBMS & SQL Server Installation Database Laboratory

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

Ç¥Áö

PowerPoint 프레젠테이션

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

슬라이드 1

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에

PowerPoint Presentation

슬라이드 1

Apache Ivy

1

FileMaker ODBC 및 JDBC 가이드

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

14-Servlet

untitled

Microsoft PowerPoint - CSharp-10-예외처리

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

untitled

untitled

Windows 8에서 BioStar 1 설치하기

JMF3_심빈구.PDF

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

Transcription:

7. [ 실습 ] 예제어플리케이션개발 1. 실습개요 2. 프로젝트환경구성 3. 기본환경설정 4. 예제어플리케이션개발 5. 참조 - 539 -

1. 실습개요 (1/4) 7. [ 실습 ] 예제어플리케이션개발 스프링기반의 EGOV 프레임워크를사용하여구현된예제어플리케이션구현을통하여 Presentation Layer와 Business Layer의연계를살펴본다. 예제어플리케이션구현기능 게시판등록, 수정, 삭제, 조회 Presentation Layer Business Layer HandlerMapping egovsample Controller EgovSample Service SampleDAO Dispacher- Sevlet JstlView UrlBaseView Resolver DATABASE - 540 -

1. 실습개요 (2/4) 7. [ 실습 ] 예제어플리케이션개발 예제어플리케이션실행순서 사용자는 Web Page를통해서버에요청을보낸다. Spring Framework에의해처리되는모든요청은고유한 URL 매핑혹은확장자 (*.do) 를가지고있다. 모든 URL 매핑혹은확장자는 Servlet Container에의해서모든요청이 Spring Framework에서제공하는 DipatcherServlet으로넘어가게된다. DispatcherServlet은클라이언트의요청을전달받는 Servlet으로서, 컨트롤러나뷰와같은스프링의 MVC 구성요소를이용하여클라이언트에게서비스를제공한다. DispatcherServlet 의설정은웹어플리케이션의 /WEB-INF/web.xml 파일에추가한다. DispatcherServlet은컨트롤러객체의 handlerequest() 메서드를호출하여클라이언트의요청을처리한다. 컨트롤러의 handlerequest() 메서드는처리결과정보를담은 ModelAndView 객체를리턴한다. DistpatcherServlet은 ViewResolver로부터응답결과를생성할뷰개체를구한다. 뷰는클라이언트에전송할응답을생성한다. - 541 -

1. 실습개요 (3/4) 7. [ 실습 ] 예제어플리케이션개발 프로젝트구조 (1/2) maven Repository HSQL 로컬 DB 실행소스 (controller, interface, Impl, DAO..) 리소스정보 (message, spring context xml, SQL xml..) Web context - 542 -

1. 실습개요 (4/4) 7. [ 실습 ] 예제어플리케이션개발 프로젝트구조 (2/2) class management SampleDefaultVO Serializable - firstindex: int = 1 - lastindex: int = 1 - pageindex: int = 1 - pagesize: int = 10 - pageunit: int = 10 - recordcountperpage: int = 10 - searchcondition: String = "" - searchkeyword: String = "" - searchuseyn: String = "" + getfirstindex() : int + getlastindex() : int + getpageindex() : int + getpagesize() : int + getpageunit() : int + getrecordcountperpage() : int + getsearchcondition() : String + getsearchkeyword() : String + getsearchuseyn() : String + setfirstindex(int) : void + setlastindex(int) : void + setpageindex(int) : void + setpagesize(int) : void + setpageunit(int) : void + setrecordcountperpage(int) : void + setsearchcondition(string) : void + setsearchkeyword(string) : void + setsearchuseyn(string) : void + tostring() : String SampleVO - description: String - id: String - name: String - reguser: String - serialversionuid: long = 1L {readonly} - useyn: String # beanvalidator: DefaultBeanValidator # propertiesservice: EgovPropertyService - sampleservice: EgovSampleService Egov SampleController + addsample(sampledefaultvo, SampleVO, BindingResult, Model, SessionStatus) : String + addsampleview(sampledefaultvo, Model) : String + deletesample(samplevo, SampleDefaultVO, SessionStatus) : String + selectsample(samplevo, SampleDefaultVO) : SampleVO + selectsamplelist(sampledefaultvo, ModelMap) : String + updatesample(sampledefaultvo, SampleVO, BindingResult, Model, SessionStatus) : String + updatesampleview(string, SampleDefaultVO, Model) : String -sampleservice «interface» EgovSampleService + deletesample(samplevo) : void + insertsample(samplevo) : String + selectsample(samplevo) : SampleVO + selectsamplelist(sampledefaultvo) : List + selectsamplelisttotcnt(sampledefaultvo) : int + updatesample(samplevo) : void Egov SampleServ iceimpl - egovidgnrservice: EgovIdGnrService - sampledao: SampleDAO AbstractServiceImpl + deletesample(samplevo) : void + insertsample(samplevo) : String + selectsample(samplevo) : SampleVO + selectsamplelist(sampledefaultvo) : List + selectsamplelisttotcnt(sampledefaultvo) : int + updatesample(samplevo) : void SqlMapClientFactoryBean SqlMapClientDaoSupport + getdescription() : String + getid() : String + getname() : String + getreguser() : String + getuseyn() : String + setdescription(string) : void + setid(string) : void + setname(string) : void + setreguser(string) : void + setuseyn(string) : void -sampledao SampleDAO + deletesample(samplevo) : void + insertsample(samplevo) : String + selectsample(samplevo) : SampleVO + selectsamplelist(sampledefaultvo) : List + selectsamplelisttotcnt(sampledefaultvo) : int + updatesample(samplevo) : void Egov AbstractDAO + delete(string, Object) : int # EgovAbstractDAO() + insert(string, Object) : Object + list(string, Object) : List + listwithpaging(string, Object, int, int) : List + selectbypk(string, Object) : Object + setsupersqlmapclient(sqlmapclient) : void + update(string, Object) : int - 543 -

2. 프로젝트환경구성 (1/11) 7. [ 실습 ] 예제어플리케이션개발 Eclipse character encoding 설정 workspace의 character encoding은 UTF-8로한다. windows > preference를선택한다. general 탭의 workspace 선택후 Text file encoding 을 Other : UTF-8 로설정한다. - 544 -

2. 프로젝트환경구성 (2/11) 7. [ 실습 ] 예제어플리케이션개발 Tomcat 서버를설정한다. windows > preference 를선택한다. server탭의 Runtime Environments 선택후 Add버튼을사용하여 Apache Tomcat의각버전 (Tomcat 6.0 이상 ) 에맞는 Tomcat 위치를지정한다. (Tomcat 은사용자의로컬에설치되어있어야한다.) - 545 -

2. 프로젝트환경구성 (3/11) 7. [ 실습 ] 예제어플리케이션개발 egovframework.guideprogram.basic 프로젝트를 import 한다 (1/2). File>Import... 메뉴를선택한다. General>Maven Projects 를선택한다. - 546 -

2. 프로젝트환경구성 (4/11) 7. [ 실습 ] 예제어플리케이션개발 egovframework.guideprogram.basic 프로젝트를 import 한다 (2/2). [ 압축해제폴더 ]\egovframework.guideprogram.basic 를선택한다. Finish 버튼을클릭한다. - 547 -

2. 프로젝트환경구성 (5/11) 7. [ 실습 ] 예제어플리케이션개발 Maven Dependencies 를확인한다. Maven Dependencies 가생성되었음을확인한다. - 548 -

2. 프로젝트환경구성 (6/11) 7. [ 실습 ] 예제어플리케이션개발 Maven install 을실행한다. install 이성공하면 BUILD SUCCESSFUL 을확인할수있다. BUILD SUCCESSFUL 을확인한다 - 549 -

2. 프로젝트환경구성 (7/11) 7. [ 실습 ] 예제어플리케이션개발 DBMS(HSQL DB) 를실행한다. [ 압축해제폴더 ]\egovframework.guideprogram.basic\database\db 폴더로이동한다. 명령프롬프트를실행한후, runhsqldb.cmd 파일을실행시킨다. - 550 -

2. 프로젝트환경구성 (8/11) 7. [ 실습 ] 예제어플리케이션개발 어플리케이션을실행하여테스트한다. DBMS, Tomcat Server 를실행시킨후, Web Application 이제대로실행되는지확인한다. - 551 -

2. 프로젝트환경구성 (9/11) 7. [ 실습 ] 예제어플리케이션개발 브라우저로접속하여어플리케이션실행을확인한다. - 552 -

2. 프로젝트환경구성 (10/11) 7. [ 실습 ] 예제어플리케이션개발 프로젝트생성 egovframework Web Project Project name : egovframework.edu Target Runtime : Apache Tomcat v6.0 Version : 0.0.1-SNAPSHOT - 553 -

2. 프로젝트환경구성 (11/11) 7. [ 실습 ] 예제어플리케이션개발 프로젝트환경구성 Resource 환경구성 Message Spring Context Sqlmap(empty) Webapp 환경구성 common Css Images Config (Spring MVC config) jsp web.xml - 554 -

3. 기본환경설정 (1/10) 7. [ 실습 ] 예제어플리케이션개발 어플리케이션구현스텝 web.xml 설정 컨트롤러처리결과사용할뷰를결정할 ViewResolver 설정 DataSource 설정 DataAccess 설정 SQLMap 설정 SQLMapConfig 설정 - 555 -

3. 기본환경설정 (2/10) 7. [ 실습 ] 예제어플리케이션개발 사용자 Request 를처리하기위한 web.xml 및기본환경 context-*.xml 파일설정 사용자요청을받는서블릿인 DispatcherServlet 은컨트롤러와뷰를이용하여사용자에게응답처리를한다. DispatcherServlet 은 Web Application 의 /WEB-INF/web.xml 파일에다음과같이설정한다. <?xml version="1.0" encoding="utf-8"?> <web-app> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <init-param> <param-name>contextconfiglocation </param-name> <param-value> /WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app> - 556 -

3. 기본환경설정 (3/10) 7. [ 실습 ] 예제어플리케이션개발 web.xml 설정 Presentation Layer와 Business Layer 연계를위한설정 web.xml에 context-param 요소로 contextconfiglocation 등록한다. Presentation Layer에존재하는 Bean 설정파일의위치를등록하여 Application Context로쉽게참조할수있도록한다. <?xml version="1.0" encoding="utf-8"?> <web-app> <context-param> <param-name>contextconfiglocation </param-name> <param-value> classpath*:egovframework/spring/context-*.xml </param-value> </context-param> </web-app> - 557 -

3. 기본환경설정 (4/10) 7. [ 실습 ] 예제어플리케이션개발 컨트롤러처리결과사용할뷰를결정할 ViewResolver 설정 (1/2) 컨트롤러가지정한뷰이름으로부터응답결과화면을생성하는 View 객체는 ViewResolver를통해서생성한다. BasicSampleService의 Exception ViewResolver는아래와같이 dispatcher-servlet.xml에설정한다. <?xml version="1.0" encoding="utf-8"?> <bean class="org.springframework.web.servlet.handler.simplemappingexceptionresolver"> <property name="defaulterrorview" value="cmmn/egoverror" /> <property name="exceptionmappings"> <props> <prop key="org.springframework.dao.dataaccessexception">cmmn/dataaccessfailure </prop> <prop key="org.springframework.transaction.transactionexception">cmmn/transactionfailure </prop> <prop key="egovframework.rte.fdl.cmmn.exception.egovbizexception">cmmn/egovbizexception</prop> </props> </property> </bean> - 558 -

3. 기본환경설정 (5/10) 7. [ 실습 ] 예제어플리케이션개발 컨트롤러처리결과사용할뷰를결정할 ViewResolver 설정 (2/2) Basisc Sample Service 의 ViewResolver 는아래와같이 dispatcher-servlet.xml 에설정한다. <?xml version="1.0" encoding="utf-8"?> <bean class="org.springframework.web.servlet.view.urlbasedviewresolver" p:order="1" p:viewclass="org.springframework.web.servlet.view.jstlview" p:prefix="/web-inf/jsp/egovframework/rte/" p:suffix=".jsp" /> - 559 -

3. 기본환경설정 (6/10) 7. [ 실습 ] 예제어플리케이션개발 DataSource 설정 Datasource 추가 위치 : resources/egovframework/spring/context-datasource.xml Hsql 의 driverclassname : net.sf.log4jdbc.driverspy Hsql 의 url : jdbc:log4jdbc:hsqldb:hsql://localhost/sampledb Hsql 의 username: sa <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroymethod="close"> <property name="driverclassname" value="net.sf.log4jdbc.driverspy"/> <property name="url" value="jdbc:log4jdbc:hsqldb:hsql://localhost/sampledb"/> <property name="username" value="sa"/> </bean> - 560 -

3. 기본환경설정 (7/10) 7. [ 실습 ] 예제어플리케이션개발 DataAccess 설정 ibatis 를사용하기위한 SqlMapConfig 위치설정 <bean id="sqlmapclient" class="org.springframework.orm.ibatis.sqlmapclientfactorybean"> <property name="configlocation" value="classpath:/egovframework/sqlmap/sql-map-config.xml"/> <property name="datasource" ref="datasource"/> </bean> SqlMapConfig 설정 : SQL 위치지정 <sqlmapconfig> <sqlmap resource="egovframework/sqlmap/edu/egovedu_sql.xml"/> </sqlmapconfig> - 561 -

3. 기본환경설정 (8/10) 7. [ 실습 ] 예제어플리케이션개발 SQLMap 설정 ibatis를사용하기위한 SqlMap생성 Parent folder : egovframework.edu/src/main/resources/egovframework/sqlmap/edu File name : EgovEdu_SQL.xml - 562 -

3. 기본환경설정 (9/10) 7. [ 실습 ] 예제어플리케이션개발 SQLMapConfig 설정 (1/2) ibatis를사용하기위한 SqlMap생성 Parent folder : egovframework.edu/src/main/resources/egovframework/sqlmap File name : sql-map-config.xml - 563 -

3. 기본환경설정 (10/10) 7. [ 실습 ] 예제어플리케이션개발 SQLMapConfig 설정 (2/2) Add 로 sqlmap 선택 위치 : resource/egovframework/sqlmap/edu/egovedu_sql.xml <sqlmapconfig> <sqlmap resource="egovframework/sqlmap/edu/egovedu_sql.xml"/> </sqlmapconfig> - 564 -

4. 예제어플리케이션개발 (1/27) 7. [ 실습 ] 예제어플리케이션개발 어플리케이션구현스텝 목록조회기능개발 상세조회기능개발 입력기능및 idgen, validation 기능개발 수정기능개발 삭제기능개발 - 565 -

4. 예제어플리케이션개발 (2/27) 7. [ 실습 ] 예제어플리케이션개발 목록조회 SampleVO 작성 SQLMap 작성및 SQL 작성 DAO 작성 Impl 작성 Controller 작성 - 566 -

4. 예제어플리케이션개발 (3/27) 7. [ 실습 ] 예제어플리케이션개발 SampleVO 작성 속성 속성설명타입 id 사용자아이디 String name 사용자명 String description 내용 String useyn 사용여부 String reguser 등록자 String 패키지 : egovframework.education.sample.service private String id; public String getid() { return id; } public void setid(string id) { this.id = id; }... - 567 -

4. 예제어플리케이션개발 (4/27) 7. [ 실습 ] 예제어플리케이션개발 SQLMap 작성 Alias 추가 resources/egovframework/sqlmap/edu/egovedu_sql.xml 파일에설정 egovmap : egovframework.rte.psl.dataaccess.util.egovmap 1. Apache commons Collections 의 ListOrderedMap 을 extends 하고있으며 Map 의 key 를입력시 Camel Case 표기법으로변경하여처리하는 Map 의구현체 2. ibatis 의경우 egovmap 으로결과조회시별도의 alias 없이 DB 칼럼명그대로조회하는것만으로도일반적인 VO 의 attribute (camel case) 에대한 resultmap 과같은효과를낼수있도록추가하였음 searchvo : egov egovframework.edu.service.sampledefaultvo 1. 화면조회를위한조건정보 : page, index, 페이지당레코드수 samplevo : egov egovframework.edu.service.samplevo 조회결과에매핑되기위한필드정보 <sqlmap namespace="education"> <typealias alias="egovmap" type="egovframework.rte.psl.dataaccess.util.egovmap"/> <typealias alias="searchvo" type="egovframework.edu.sample.service.sampledefaultvo"/> <typealias alias= samplevo" type="egovframework.edu.sample.service.samplevo"/> </sqlmap> - 568 -

4. 예제어플리케이션개발 (5/27) 7. [ 실습 ] 예제어플리케이션개발 목록조회 (1/3) SQL 작성 resources/egovframework/sqlmap/edu/egovedu_sql.xml 파일에설정 <select id="sampledao.selectsamplelist_d" parameterclass="searchvo" resultclass="egovmap"> SELECT ID, NAME, DESCRIPTION, USE_YN, REG_USER FROM SAMPLE WHERE 1=1 <isequal prepend="and" property="searchcondition" comparevalue="0"> ID = #searchkeyword# </isequal> <isequal prepend="and" property="searchcondition" comparevalue="1"> NAME LIKE '%' #searchkeyword# '%' </isequal> ORDER BY ID DESC </select> - 569 -

4. 예제어플리케이션개발 (6/27) 7. [ 실습 ] 예제어플리케이션개발 목록조회 (2/3) DAO 클래스작성 public List selectsamplelist(sampledefaultvo searchvo) throws Exception { return list("sampledao.selectsamplelist_d", searchvo); } Impl 클래스작성 public List selectsamplelist(sampledefaultvo searchvo) throws Exception { return sampledao.selectsamplelist(searchvo); } Controller 작성 @RequestMapping(value="/sample/egovSampleList.do") public String selectsamplelist(@modelattribute("searchvo") SampleDefaultVO searchvo, ModelMap model) throws Exception { } List samplelist = sampleservice.selectsamplelist(searchvo); model.addattribute("resultlist", samplelist); Jsp 에서 items로결과를받아온다. return "/sample/egovsamplelist"; View(egovSampleList.jsp) - 570 -

4. 예제어플리케이션개발 (7/27) 7. [ 실습 ] 예제어플리케이션개발 목록조회 (3/3) 결과 - 571 -

4. 예제어플리케이션개발 (8/27) 7. [ 실습 ] 예제어플리케이션개발 상세조회 SQLMap (ResultMap) 작성 DAO 작성 Impl 작성 Controller 작성 - 572 -

4. 예제어플리케이션개발 (9/27) 7. [ 실습 ] 예제어플리케이션개발 상세조회 (1/3) SQLMap 작성 <resultmap id="sample" class="egovframework.education.sample.service.samplevo"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="description" column="description"/> <result property="useyn" column="use_yn"/> <result property="reguser" column="reg_user"/> </resultmap> SQL 작성 <select id="sampledao.selectsample_s" resultmap="sample"> <![CDATA[ SELECT ID, NAME, DESCRIPTION, USE_YN, REG_USER FROM SAMPLE WHERE ID=#id# ]]> </select> Impl 작성 public SampleVO selectsample(samplevo vo) throws Exception { SampleVO resultvo = sampledao.selectsample(vo); if (resultvo == null) throw processexception("info.nodata.msg"); return resultvo; } - 573 -

4. 예제어플리케이션개발 (10/27) 7. [ 실습 ] 예제어플리케이션개발 상세조회 (2/3) SqlMap Editor 를이용하여 resultmap 을설정할수도있다. - 574 -

4. 예제어플리케이션개발 (11/27) 7. [ 실습 ] 예제어플리케이션개발 상세조회 (3/3) DAO 작성 public SampleVO selectsample(samplevo vo) throws Exception { return (SampleVO) selectbypk("sampledao.selectsample_s", vo); } Controller 작성 @RequestMapping("/sample/selectSample.do") public @ModelAttribute("sampleVO") SampleVO selectsample( SampleVO samplevo, @ModelAttribute("searchVO") SampleDefaultVO searchvo) throws Exception { } return sampleservice.selectsample(samplevo); @RequestMapping("/sample/updateSampleView.do") public String updatesampleview( @RequestParam("selectedId") String id, @ModelAttribute("searchVO") SampleDefaultVO searchvo, Model model) throws Exception { SampleVO vo = new SampleVO(); vo.setid(id); model.addattribute(selectsample(vo, searchvo)); } return "/sample/egovsampleregister"; - 575 -

4. 예제어플리케이션개발 (12/27) 7. [ 실습 ] 예제어플리케이션개발 상세조회결과 - 576 -

4. 예제어플리케이션개발 (13/27) 7. [ 실습 ] 예제어플리케이션개발 등록 SQL 작성 DAO 작성 Impl 작성 context-idgen.xml 작성 Validator 작성 - 577 -

4. 예제어플리케이션개발 (14/27) 7. [ 실습 ] 예제어플리케이션개발 등록 (1/3) SQL 작성 <insert id="sampledao.insertsample_s"> <![CDATA[ INSERT INTO SAMPLE ( ID, NAME, DESCRIPTION, USE_YN, REG_USER ) VALUES ( #id#, #name#, #description#, #useyn#, #reguser# ) ]]> </insert> DAO 작성 public String insertsample(samplevo vo) throws Exception { return (String)insert("sampleDAO.insertSample_S", vo); } - 578 -

4. 예제어플리케이션개발 (15/27) 7. [ 실습 ] 예제어플리케이션개발 등록 (2/3) Impl 작성 @Resource(name="egovIdGnrService") private EgovIdGnrService egovidgnrservice; public String insertsample(samplevo vo) throws Exception { String id = egovidgnrservice.getnextstringid(); vo.setid(id); } sampledao.insertsample(vo); return id; - 579 -

4. 예제어플리케이션개발 (16/27) 7. [ 실습 ] 예제어플리케이션개발 등록 (3/3) Controller 작성 @Resource(name = "beanvalidator") protected DefaultBeanValidator beanvalidator; @RequestMapping("/sample/addSampleView.do") public String addsampleview( @ModelAttribute("searchVO") SampleDefaultVO searchvo, Model model) throws Exception { } model.addattribute("samplevo", new SampleVO()); return "/sample/egovsampleregister"; @RequestMapping("/sample/addSample.do") public String addsample( @ModelAttribute("searchVO") SampleDefaultVO searchvo, SampleVO samplevo, BindingResult bindingresult, Model model, SessionStatus status) throws Exception { // Server-Side Validation beanvalidator.validate(samplevo, bindingresult); if (bindingresult.haserrors()) { model.addattribute("samplevo", samplevo); return "/sample/egovsampleregister"; } } sampleservice.insertsample(samplevo); status.setcomplete(); return "forward:/sample/egovsamplelist.do"; - 580 -

4. 예제어플리케이션개발 (17/27) 7. [ 실습 ] 예제어플리케이션개발 등록 -idgen Context-idgen.xml 작성 <bean name="egovidgnrservice" class="egovframework.rte.fdl.idgnr.impl.egovtableidgnrservice" destroy-method="destroy"> <property name="datasource" ref="datasource" /> <property name="strategy" ref="mixprefixsample" /> <property name="blocksize" value="10"/> <property name="table" value="ids"/> <property name="tablename"value="sample"/> </bean> <bean name="mixprefixsample" class="egovframework.rte.fdl.idgnr.impl.strategy.egovidgnrstrategyimpl"> <property name="prefix" value="sample-" /> <property name="cipers" value="5" /> <property name="fillchar" value="0" /> </bean> - 581 -

4. 예제어플리케이션개발 (18/27) 7. [ 실습 ] 예제어플리케이션개발 등록 -validator(1/3) dispatcher-servlet.xml 수정 <bean id="beanvalidator" class="org.springmodules.validation.commons.defaultbeanvalidator"> <property name="validatorfactory" ref="validatorfactory"/> </bean> <bean id="validatorfactory" class="org.springmodules.validation.commons.defaultvalidatorfactory"> <property name="validationconfiglocations"> <list> <value>/web-inf/config/egovframework/validator/validator-rules.xml</value> <value>/web-inf/config/egovframework/validator/validator.xml</value> </list> </property> </bean> - 582 -

4. 예제어플리케이션개발 (19/27) 7. [ 실습 ] 예제어플리케이션개발 등록 -validator(2/3) Validator.xml 작성 <form-validation> <formset> <form name="samplevo"> <field property="name" depends="required"> <arg0 key="title.sample.name" /> </field> <field property="description" depends="required"> <arg0 key="title.sample.description" /> </field> <field property="reguser" depends="required"> <arg0 key="title.sample.reguser" /> </field> </form> </formset> </form-validation> Validator-rules.xml 작성 - 583 -

4. 예제어플리케이션개발 (20/27) 7. [ 실습 ] 예제어플리케이션개발 등록 -validator(3/3) jsp 작성 <%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> <script type="text/javascript" src="<c:url value='/cmmn/validator.do'/>"></script> <validator:javascript formname="samplevo" staticjavascript="false" xhtml="true" cdata="false"/> function fn_egov_save() { frm = document.detailform; if(!validatesamplevo(frm)){ return; }else{ frm.action = "<c:url value="${registerflag == ' 등록 '? '/sample/addsample.do' : '/sample/updatesample.do'}"/>"; frm.submit(); } } - 584 -

4. 예제어플리케이션개발 (21/27) 7. [ 실습 ] 예제어플리케이션개발 등록결과 - 585 -

4. 예제어플리케이션개발 (22/27) 7. [ 실습 ] 예제어플리케이션개발 수정 (1/2) SQL 작성 <update id="sampledao.updatesample_s"> <![CDATA[ UPDATE SAMPLE SET ID=#id#, NAME=#name#, DESCRIPTION=#description#, USE_YN=#useYn# WHERE ID=#id# ]]> </update> DAO 작성 public void updatesample(samplevo vo) throws Exception { update("sampledao.updatesample_s", vo); } Impl 작성 public void updatesample(samplevo vo) throws Exception { sampledao.updatesample(vo); } - 586 -

4. 예제어플리케이션개발 (23/27) 7. [ 실습 ] 예제어플리케이션개발 수정 (2/2) Controller 작성 @RequestMapping("/sample/updateSampleView.do") public String updatesampleview( @RequestParam("selectedId") String id, @ModelAttribute("searchVO") SampleDefaultVO searchvo, Model model) throws Exception { SampleVO samplevo = new SampleVO(); samplevo.setid(id); } model.addattribute(selectsample(samplevo, searchvo)); return "/sample/egovsampleregister"; @RequestMapping("/sample/updateSample.do") public String updatesample( @ModelAttribute("searchVO") SampleDefaultVO searchvo, SampleVO samplevo, BindingResult bindingresult, Model model, SessionStatus status) throws Exception { beanvalidator.validate(samplevo, bindingresult); if (bindingresult.haserrors()) { model.addattribute("samplevo", samplevo); return "/sample/egovsampleregister"; } } sampleservice.updatesample(samplevo); status.setcomplete(); return "forward:/sample/egovsamplelist.do"; - 587 -

4. 예제어플리케이션개발 (24/27) 7. [ 실습 ] 예제어플리케이션개발 수정결과 - 588 -

4. 예제어플리케이션개발 (25/27) 7. [ 실습 ] 예제어플리케이션개발 삭제 (1/2) SQL 작성 <delete id="sampledao.deletesample_s"> <![CDATA[ DELETE FROM SAMPLE WHERE ID=#id# ]]> </delete> DAO 작성 public void deletesample(samplevo vo) throws Exception { delete("sampledao.deletesample_s", vo); } - 589 -

4. 예제어플리케이션개발 (26/27) 7. [ 실습 ] 예제어플리케이션개발 삭제 (2/2) Impl 작성 public void deletesample(samplevo vo) throws Exception { sampledao.deletesample(vo); } Controller 작성 @RequestMapping("/sample/deleteSample.do") public String deletesample( SampleVO samplevo, @ModelAttribute("searchVO") SampleDefaultVO searchvo, SessionStatus status) throws Exception { } sampleservice.deletesample(samplevo); status.setcomplete(); return "forward:/sample/egovsamplelist.do"; - 590 -

4. 예제어플리케이션개발 (27/27) 7. [ 실습 ] 예제어플리케이션개발 삭제결과 - 591 -

5. 참조 (1/2) 7. [ 실습 ] 예제어플리케이션개발 AbstractServiceImpl 기본메소드 EgovBizException 발생을위한메소드 protected Exception processexception(final String msgkey) protected Exception processexception(final String msgkey, Exception e) protected Exception processexception(final String msgkey, final String[] msgargs) protected Exception processexception(final String msgkey, final String[] msgargs, final Exception e) protected Exception processexception(final String msgkey, final String[] msgargs, final Exception e, Locale locale) protected Exception processexception(final String msgkey, final String[] msgargs, final Exception e, final Locale locale, ExceptionCreator exceptioncreator) Exception 발생없이후처리로직실행을위한메소드 protected void leaveatrace(string msgkey) protected void leaveatrace(string msgkey, String[] msgargs) protected void leaveatrace(string msgkey, String[] msgargs, Locale locale) - 592 -

5. 참조 (2/2) 7. [ 실습 ] 예제어플리케이션개발 EgovAbstractDAO ibatis 의 SqlMapClientDaoSupport 확장 입력처리 SQL mapping 을실행한다. public Object insert(string queryid, Object parameterobject) 수정처리 SQL mapping 을실행한다. public int update(string queryid, Object parameterobject) 삭제처리 SQL mapping 을실행한다. public int delete(string queryid, Object parameterobject) pk 를조건으로한단건조회처리 SQL mapping 을실행한다. public Object selectbypk(string queryid, Object parameterobject) 리스트조회처리 SQL mapping 을실행한다. public List list(string queryid, Object parameterobject) 부분범위리스트조회처리 SQL mapping 을실행한다. ( 부분범위 - pageindex 와 pagesize 기반으로현재부분범위조회를위한 skipresults, maxresults 를계산하여 ibatis 호출 ) public List listwithpaging(string queryid, Object parameterobject, int pageindex, int pagesize) - 593 -