달력

12

« 2017/12 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  
  •  

'GWT'에 해당되는 글 3

  1. 2010.09.30 SpringRoo GWT 생성 로그보기
  2. 2010.09.30 SpringRoo GWT 예제 테스트
  3. 2010.09.17 GWT(SmartGWT) 관련 링크
2010.09.30 11:17

SpringRoo GWT 생성 로그보기 SpringRoo2010.09.30 11:17

이전글(SpringRoo GWT 예제 테스트)에서 테스트한 내용을 콘솔기준으로 살펴본다. gwt setup 명령으로 생성된 것들은 실행된 로그를 보면, 어떤것들이 생성되고, 관리되어지는지 알수 있다. 그 로그를 분리하여 보자. (STS 프로젝트명은 'gwt1' 이다)

~.domain.Account roo> gwt setup
Created SRC_MAIN_WEBAPP\WEB-INF\spring
Created SRC_MAIN_WEBAPP\WEB-INF\spring\webmvc-config.xml
Created SRC_MAIN_WEBAPP\WEB-INF\web.xml
Managed SRC_MAIN_WEBAPP\WEB-INF\web.xml

gwt명령을 하기전까지는 일반적인 SpringRoo 프로젝트로 Entity기준으로 생성된 구조이다. 여기에 UI 부분을 기존의 Spring Web MVC가 아닌, GWT를 사용하는 것이다. 따라서, 기존의 'controller all' 명령과 비슷하게, Web 프로젝트 관련 파일들을 생성한다. 그 첫번째로, Servelt 설정파일인, webmvc-config.xml파일을 생성하고, web.xml에 DispatcherServlet 관련 web 설정을 생성한다. web.xml을 생성하자마자, Managed 되는데, 이는 gwt1 servlet 관련 설정을 추가하는 것으로 보인다.


Managed ROOT\pom.xml [Added dependency org.springframework:spring-web:${spring.version}]
Managed ROOT\pom.xml [Added dependency org.springframework:spring-webmvc:${spring.version}]
Managed ROOT\pom.xml [Added dependency org.springframework.webflow:spring-js:2.1.1.RELEASE]
Managed ROOT\pom.xml [Added dependency commons-digester:commons-digester:2.0]
Managed ROOT\pom.xml [Added dependency commons-fileupload:commons-fileupload:1.2.1]
Managed ROOT\pom.xml [Added dependency javax.servlet:jstl:1.2]
Managed ROOT\pom.xml [Added dependency javax.el:el-api:1.0]
Managed ROOT\pom.xml [Added dependency joda-time:joda-time:1.6]
Managed ROOT\pom.xml
Managed ROOT\pom.xml [Added dependency com.google.gwt:gwt-servlet:2.1-SNAPSHOT]
Managed ROOT\pom.xml [Added dependency com.google.gwt:gwt-user:2.1-SNAPSHOT]
Managed ROOT\pom.xml [Added dependency org.json:json:20090211]
Managed ROOT\pom.xml
Managed SRC_MAIN_WEBAPP\WEB-INF\web.xml
Managed SRC_MAIN_WEBAPP\WEB-INF\spring\webmvc-config.xml

GWT 프로젝트도 스프링웹 모듈을 사용하기 때문에 관련 jar를 추가하고, gwt jar도 추가하는 pom 관련 로그이다. 마지막에 web.xml도 추가 되는데, 이것은 gwt 요청 관련 servlet(RequestFactoryServlet) 설정을 등록하기 위해서 추가되는 것으로 보인다. (이것은 나중에 생성된 소스코드 분석할때나 또는 Roo모듈인 GWT플러그인 코스를 살펴볼때 좀더 알아본다.) webmvc-config.xml 파일은 '<mvc:view-controller path="/" view-name="/ApplicationScaffold.html"/>' 이라는 시작점 html이 추가된것 이외에는 특이할만한 사항이 없다.


Created SRC_MAIN_JAVA\net\max\gwt
Created SRC_MAIN_JAVA\net\max\gwt\ApplicationScaffold.gwt.xml
Created SRC_MAIN_JAVA\net\max\gwt\ApplicationCommon.gwt.xml
Created SRC_MAIN_JAVA\net\max\gwt\ApplicationMobileScaffold.gwt.xml

XXX.gwt.xml은 gwt 모듈 설정 파일이다. 나는 하나의 Entity를 등록했는데 3개의 설정파일이 생겼다. 소스코드 내용은 나중에 살펴보기로 하고, 대략 설명하면, ApplicationCommon.gwt.xml 은 모든 모듈 설정파일에 공통으로 포함되는것을 빼놓은것으로 PHP의 include 를 생각하면 되겠다. ApplicationScaffold.gwt.xml 가 메인 시작점(entry-point)이다. ApplicationMobileScaffold.gwt.xml은 덤으로 모바일용까지 생성한다. (왜 '덤'까지 만들고 있는지는 알수 없다. 안그래도 생성되는 파일이 많아서 복잡한데...)


Created SRC_MAIN_JAVA\net\max\gwt\request
Created SRC_MAIN_JAVA\net\max\gwt\scaffold
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\gwtLogo.png
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ScaffoldShell.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ScaffoldMobileShell.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ScaffoldShell.ui.xml
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\Scaffold.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ScaffoldMobileShell.ui.xml
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\mobile.css
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ScaffoldMobile.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\rooLogo.png
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ScaffoldPlaceHistoryHandler.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\createButton.png
Created SRC_MAIN_JAVA\net\max\gwt\ui
Created SRC_MAIN_JAVA\net\max\server

UI 관련 폴더를 만들고, 주로 scaffold 폴더의 파일들을 생성하고 있다. Scaffold.java 파일이 GWT의 EntryPoint를 구현하고 있어서 UI의 가장 핵심 폴더이다. 주요 생성 파일만 설명하면 아래와 같다.
 - ScaffoldShell.java : UI를 꾸미는 panel, widget 같은 값을 얻음
 - ScaffoldShell.ui.xml : UI 템플릿 파일
 - Scaffold.java : App의 시작점으로 UI,Data까지 모든것을 바인딩함
 - ScaffoldPlaceHistoryHandler.java : 히스토리 핸들러 인터페이스


Created SRC_MAIN_WEBAPP\ApplicationMobileScaffold.html
Created SRC_MAIN_WEBAPP\ApplicationScaffold.html

html 시작점 페이지 생성, 역시 모바일용과 함께 생성된다.


Created SRC_MAIN_JAVA\net\max\gwt\style
Created SRC_MAIN_JAVA\net\max\gwt\style\Style.gwt.xml
Created SRC_MAIN_JAVA\net\max\gwt\style\client
Created SRC_MAIN_JAVA\net\max\gwt\style\client\userIcon.png
Created SRC_MAIN_JAVA\net\max\gwt\style\client\Styles.java
Created SRC_MAIN_JAVA\net\max\gwt\style\client\groupIcon.png
Created SRC_MAIN_JAVA\net\max\gwt\style\client\openGradient.png
Created SRC_MAIN_JAVA\net\max\gwt\style\client\common.css
Created SRC_MAIN_JAVA\net\max\gwt\style\client\selectionGradient.png
Created SRC_MAIN_JAVA\net\max\gwt\shared

CSS 생성, GWT는 css도 자바로 읽어 들여서, 메서드에서 효과를 주기도 한다. Styles.java가 css 리소스를 읽어 들이는데 쓰인다.


Created SRC_MAIN_JAVA\net\max\gwt\ui\AccountActivitiesMapper.java
Created SRC_MAIN_JAVA\net\max\gwt\ui\AccountEditActivity.java
Created SRC_MAIN_JAVA\net\max\gwt\ui\AccountDetailsActivity.java
Created SRC_MAIN_JAVA\net\max\gwt\ui\AccountListActivity.java

Entity인 Account의 액션들을 처리해 주는 것들로, Controller의 액션 처리 메서드로 생각하면 되겠다.


Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountListView.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountListView.ui.xml
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountDetailsView.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountDetailsView.ui.xml
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountEditView.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountEditView.ui.xml
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountRecordRenderer.java

Entity인 Account의 액션들을 보여 주는 것들로, jspx페이지의 list.jspx, create.jspx 파일의 테그 템플릿 쯤으로 생각해도 되겠다.


Created SRC_MAIN_JAVA\net\max\gwt\request\AccountRecordChanged.java
Created SRC_MAIN_JAVA\net\max\gwt\request\AccountChangedHandler.java
Created SRC_MAIN_JAVA\net\max\gwt\request\AccountRecord.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountListViewBinder.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountDetailsViewBinder.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\generated\AccountEditViewBinder.java

Created SRC_MAIN_JAVA\net\max\gwt\request\AccountRequest.java
Created SRC_MAIN_JAVA\net\max\gwt\request\ApplicationEntityTypesProcessor.java
Created SRC_MAIN_JAVA\net\max\gwt\request\ApplicationRequestFactory.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ApplicationListPlaceRenderer.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ScaffoldFactory.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ApplicationMasterActivities.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ApplicationDetailsActivities.java
Created SRC_MAIN_JAVA\net\max\gwt\scaffold\ScaffoldMobileActivities.java

GWT에서 서버로 요청을 하고 그 결과를 넘겨주는데, 일반적인 XML이나 JSON 방식이 아닌, 객체로 하는데, 그냥 객체가 아닌 Reocde된 것으로 그런 제반사항을 처리해 주는 클래스 및 인터페이스들이다. 사실 이 멋진 방법들 때문에, 생성되는 파일수가 많다. 그리고 GWT 프로젝트의 특정 패턴(Factory를 이용한 컴포넌트 생성 방법 등)과 aspect적인 클래스들이 한꺼번에 생성되어 복잡해 보인다. 비슷한 기능을 하는 SmartGWT Server Framework에서는 비교적 잘 정리되어 있는것에 반해서 아직 Roo은 만들어지는 과정에 있는듯한 느낌을 지울수 없다.(실제로 생성된 소스코드엔 TODO 메시지가 자주 보인다.)

다음은, 코드 구조보기...

신고
TAG GWT, SpringRoo
Posted by summerwars
2010.09.30 11:15

SpringRoo GWT 예제 테스트 SpringRoo2010.09.30 11:15

Spring STS 2.5.0.M3에서 테스트 하였고, Spring Roo 버전은 1.1.0.M3 [rev e66e029] 이다.

1) Roo 프로젝트 생성후, 아래 명령실행 (log.roo 파일임)

// Spring Roo 1.1.0.M3 [rev e66e029] log opened at 2010-09-30 09:26:35
project --topLevelPackage net.max --projectName gwt1 --java 6
// Spring Roo 1.1.0.M3 [rev e66e029] log opened at 2010-09-30 09:26:39
persistence setup --database HYPERSONIC_IN_MEMORY --provider HIBERNATE
entity --class ~.domain.Account --testAutomatically
field string --fieldName name
field string --fieldName email
gwt setup


2)  콘솔에서 아래 명령 실행

mvn gae:deploy


3) 브라우저에서 확인 (GWT Development Mode)



4) 성공시 화면



다음은, 생성된 소스코드 살펴보기...
신고
TAG GWT, SpringRoo
Posted by summerwars
2010.09.17 18:11

GWT(SmartGWT) 관련 링크 GWT2010.09.17 18:11

gwt maven dependency
http://gwt-maven.googlecode.com/svn/docs/maven-googlewebtoolkit2-plugin/examples.html


smartgwt example showcase
http://www.smartclient.com/smartgwt/showcase/#main


smartgwt vod live-coding
http://www.youtube.com/results?search_query=SmartGWT


smartgwt ui-binding
http://code.google.com/p/uibinding-smartgwt/


smartgwt + spring security
http://technowobble.blogspot.com


smartgwt extensions(fileupload)
http://code.google.com/p/smartgwt-extensions/source/checkout


smartgwt forum
http://forums.smartclient.com

신고

'GWT' 카테고리의 다른 글

GWT(SmartGWT) 관련 링크  (0) 2010.09.17
TAG GWT, SmartGWT
Posted by summerwars


티스토리 툴바