GrailsABC-Domain我的地盘.doc_第1页
GrailsABC-Domain我的地盘.doc_第2页
GrailsABC-Domain我的地盘.doc_第3页
GrailsABC-Domain我的地盘.doc_第4页
GrailsABC-Domain我的地盘.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在介绍Grails之前,首先我们需要了解一下Groovy。Groovya.【俚】绝妙的;时髦的Groovy是由James Strachan和Bob McWhirter创造的。James还参与了许多其他开源项目的开发,其中包括Jelly, dom4j, Jaxen, Betwixt和Maven。Bob是Jaxen和Drools (一个开源的面向对象的JAVA规则引擎) 的创始人。官方给自己的定义是一种基于JAVA框架更灵活的动态开发语言。特点:1. 完全兼容JAVA语法以及所有的JAVA类库2. 参考了Python、Ruby、Smalltalk的设计理念减少编程时候的不必要的琐碎时间,令编写程序的人高兴。其次是良好的界面设计。强调系统设计必须强调人性化,而不是一味从机器的角度设想。“ 人们特别是电脑工程师们,常常从机器着想。他们认为:“这样做,机器就能运行的更快;这样做,机器运行效率更高;这样做,机器就会怎样怎样怎样。”实际上,我们需要从人的角度考虑问题,人们怎样编写程序或者怎样使用机器上应用程序。我们是主人,他们是仆人。 ”遵循上述的理念,Groovy 语言通常非常直观,按照编程人认为它应该的方式运行。3. 允许省略分号和修饰符,除非另行指定,Groovy 的所有内容都为 public。4. Groovy 允许定义简单脚本,同时无需定义正规的class 对象。5. Groovy 在普通的常用 Java 对象上增加了一些独特的方法和快捷方式,使得它们更容易使用。例如本地集合、内置的正则表达式和闭包(闭包可以想像为一个代码块,可以现在定义,以后再执行)。6. Groovy 语法还允许省略变量类型。附:Groovy目前的最新版本是Groovy1.6.3/groovy/distributions/installers/windows/nsis/groovy-1.6.3-installer.exe (Windows安装包下载地址)Groovy是基于Java框架的语言,所以我们需要先安装JDK。这里我已经事先装好。Groovy压缩包解压后,我们需要添加GROOVY_HOME并向PATH中添加Groovy的bin目录。我们写一个HelloWord测试一下Groovy是否安装成功。println Hello Word!保存为HelloWorld.groovy文件。在命令行运行正常输出说明安装配置成功。下面简单通过代码解释一下Groovy里的闭包。Groovy闭包/ Groovy闭包def closure = x, y - return x * y / 闭包定义def a = closure.call(2,3)/ 显式调用def b = closure(3,4)/ 隐式调用/use currydef c1 = closure.curry(4,5)/ c = return 3 * 4 def c2 = closure.curry(5)/ d = y - return 5 * y def c = c1() def d = c2(6) println a: $a / a is 6println b: $b / b is 12println c: $c / c is 20println d: $d / d is 30Groovy简化迭代/JAVA迭代import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class JavaIteratorExample public static void main(String args) Collection coll = new ArrayList(); coll.add(It_A); coll.add(It_B); coll.add(It_C); Iterator iter = coll.iterator(); while(iter.hasNext() System.out.println(iter.next(); /Groovy迭代def coll = It_A,It_B,It_Ccoll.eachprintln itGrailsGrails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate和其它标准Java框架之上,从而为大家带来一套能实现超高生产力的一站式框架。它的设计理念来自于Rails,所以我们可以理解Grails为Groovy-Rails。特点:l 易于使用的基于Hibernate的对象-关系映射(ORM)层 l 称为Groovy Server Pages (GSP)的表现层技术 l 基于Spring MVC的控制器层 l 构建于Gant 上的命令行脚本运行环境 l 内置Jetty服务器,不用重新启动服务器就可以进行重新加载 l 利用内置的Spring 容器实现依赖注入 l 基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持 l 基于Spring事务抽象概念,实现事务服务层l Grails以它的快捷便利、灵活易用,总有一天会成为今后的流行主题。关于RailsRails框架首次提出是在2004年7月,它的研发者是26岁的丹麦人David Heinemeier Hansson。不同于已有复杂的Web 开发框架,Rails是一个更符合实际需要而且更高效的Web开发框架。Rails结合了PHP体系的优点(快速开发)和Java体系的优点(程序规整),因此,Rails在其提出后不长的时间里就受到了业内广泛的关注。Rails框架主要有如下的6大特点。1全栈式的MVC框架Rails是一个全栈式的MVC框架,换句话说,通过Rails可以实现MVC模式中的各个层次,并使它们无缝地协同运转起来。在实际开发一个MVC模式的Web应用项目时,如果使用Java开发,需要用到Struts(Model层)、Hibernate(Controller层)和Spring(View层)3个框架,而且需要额外整合3个框架开发出的内容。而使用Ruby语言开发相同的项目时,只需要用到Rails框架就可以完成。2约定优于配置为了说明各个对象之间的关联关系,一般的Web应用开发框架往往采用写入XML配置文件的方法。这种方式虽然可以解决一些问题,但是却带来了管理上的混乱。Rails对此的态度是约定优于配置,这意味着在Rails中不会出现XML配置文件。Rails使用Web应用多年来积累的各种常见约定(更具体地说是命名规则)来代替XML配置文件,而在Rails内部的映射与发现机制根据这些约定可以实现对象之间的关联。在第1章中,通过Rails的映射与发现机制实现了数据表与Ruby对象之间的关联。3更少的代码使用约定来代替XML配置文件说明Rails本身完成了大量的底层工作,这意味着使用更少的代码来实现应用程序是极有可能的。此外,代码量的缩减也减小了出现bug的可能性,降低了维护程序和升级程序的难度。4生成器Rails使用的实时映射技术和元编程技术,免去了开发人员在开发过程中编写大量样板文件代码的烦恼。在少数需要使用样板文件代码的时候,开发人员可以通过Rails内建的生成器脚本实时创建,而不再是通过手工编写。Rails的这个特点可以使开发人员更专注于系统的逻辑结构,而不必为一些琐碎的细节所烦扰。5零周转时间对已有的Web应用系统进行修改后,其一般需要经过配置、编译、发布、重新设置、测试等一系列步骤才能投入使用,这明显浪费了许多时间。而使用Rails开发Web应用系统,可以通过浏览器即时查看程序运行结果,从而节约了大量的时间。6支架系统Rails的支架系统可以自动为任何相关的数据库表创建一套包含标准CRUD操作和前台视图的系统。通过支架系统,开发人员可以方便快捷地操纵数据库中的数据表。此外,Rails也允许开发人员使用自己设计的代码或视图来替换自动生成的代码和视图。名词【Gant】Gant是一个基于Ant的构建工具,它采用Groovy代替XML来编写构建脚本。Ant java的Makefile /jishubaodianview/?jsd_id=11227【业内信息】09年5月,Google App Engine(GAE)开始正式支持Java,这在Java生态圈内产生了不大不小的震动。一些基于JVM的动态语言也开始自然而然地获得了运行在GAE上的机会,这其中就包括JRuby和Groovy。但寻找到一个支持Grails应用的主机服务并不是件容易的事情。好消息是Grails1.1.1版本开始,Graeme Rocher在Grails的官方主页上正式宣布支持GAE。同时引入的还有AppEngine插件,这个插件使用JDO(将来会是JPA)来取代Hibernate进行持久化,以便使用Google的DataStore API,你所需要做的就是卸载掉Hibernate插件:grails uninstall-plugin hibernate然后在应用中配置JDO,AppEngine插件会为你配置好JDO。AppEngine插件还将AppEngine开发环境和Grails集成在了一起,这样开发者就可以在AppEngine容器中运行自己的Grails应用并获得热重载的支持。为了突显Grails的开发便捷性,SpringSource还特地提供了一份使用AppEngine插件创建Grails应用并部署到Google App Engine的视频,读者可以在这里下载到。国内的开发者也提供了一份只需九步即可在GAE上运行Grails项目的参考文档。但这仅仅是个开始,Grails团队继续在JDO和JPA之上构建类似GORM的抽象层,以便提升AppEngine DataStore API和JDO/JPA的用户的开发效率。终极目标就是让Grails成为构建运行在AppEngine Java SDK之上应用的主要环境,成为Python SDK之外,实际可行的有效率的选择。什么是Google App Engine/intl/zh-CN/appengine/docs/whatisgoogleappengine.htmlGrails规约 grails-app - Groovy源文件的顶级目录 o conf - 配置文件目录 o controllers - 控制器目录(MVC模型中的C)【Domain类名+Controller】o domain - 领域模型目录(MVC模型中的M)【对应持久化表名】*o i18n - 国际化目录o services - 服务目录o taglib - 标签库目录o views - 视图GSP目录(MVC中的V) scripts - Gant脚本目录 src - 源文件目录 o groovy - 其他的Groovy源文件目录 o java - 其他的Java源文件目录 test - 单元和集成测试目录*名称规则:必须大写字母开头。中间遇到大写字母,对应建表名称用下划线”_”隔开。例UserName-user_nameGrails 运行环境的判断import grails.util.GrailsUtilswitch(GrailsUtil.environment) case development:doForDevelopment()break case production:doForProduction() break 好了,下面我们来看一下Grails-MVC中的Model。Grails用户指南参见:User Guide简单Domain在传统的开发中,我们需要根据业务需求先去设计数据库,然后再根据数据库和对象需求去映射DAO(Data Access Object),最后根据DAO去定义我们的对象模型。而在Grails中,我们只需要关心业务模块以及业务对象。将业务对象根据需求写成一个Domain类,并给与相应的约束条件。Grails会自动在数据库映射Domain类,生成相应的表结构。底层的管理和映射由Grails直接接管。我们不需要关系其数据接口。下面我根据“电子订单系统”为例,简单介绍一下Domian类的设计和Domain对象的使用。电子订单系统主要处理商品和客户的关系。为了方便讲解,在这里我们再引进一个产品客户经理。class ProductString name; /名称int price;/价格Date addedDate;/上架日期Date endDate;/下架日期String description;/产品描述Map details;/其他信息class Person /定义行为实体String name;String sex;String age;Address homeAddress;Address workAddress;Map details;static embedded = homeAddress,workAddress;class Address String street;String state;/State or ProvinceString country;/Contry or Regionclass Customer extends Personstatic hasMany=orders:Order;static belongsTo = user:Userclass Manager extends Personstatic hasMany=customers:Customerstatic belongsTo = user:Userclass OrderCustomer customer;static hasMany = products:ProductDate dateCreatedDate lastUpdateddef beforeInsert = new LogEntry(user)def beforeUpdate = lastUpdated = ne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论