1. 首页
  2. 编程语言
  3. 其他
  4. Grails技术精解与Web开发实践.pdf

Grails技术精解与Web开发实践.pdf

上传者: 2019-05-15 19:51:15上传 PDF文件 107.19MB 热度 42次
Grails技术精解与Web开发实践.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!细系统变量里名0Path资里值ain: ATAvA HOMEX\bin: % GRAILS HONE%1b1□确定取消图2-3将“ CJAVA HOME%bin”加入Path配置完环境变量后,打廾一个控制台,输入命令 Javac -version,如果看到如下Java版本号( version)的提示,说明JDK已经安装配置成功。>javac -versionjavac1.6.0_062.1.2Gras的安装安装 Grails之前,首先要下载它的程序包。可以在 grails的官方主页ht:/www.grails.omg下载到。读者可根据需要,选择下载不含源程序的binary版,或下载含源码的 Source版本。下载完毕,将其解压到本机的某一路径下,如:“D”。接下来,需要配置 grails的环境变量。将 Grails解压后的路径配置为 GRAILS HOME,如图2-4所。编系统变量量名0KGRAILS地樞变量值D: \prails-1 0.4确定取消图24将 grails的解压路径设为 GRAILS HOME然后将% GRAILS HOME%bin添加到系统环境变量的Path中,如图2-5所示编辑系统变量变里名0Path变里值nMES\bin: GRAILS HOME%\bin: %GEDOVY-H[取消图2-5将“% GRAILS HOME%bin”加入Path1本书第四部分的章节会涉及到分析 Grails实现原理,需要覓读 Grails的源码。Grails技术精解与Web开发实践至此,安装和配置就这样完成了。打开控制台,输入命令gzil,如果看到如下提示,就说明安装成功了:ailsWelcometoGrails1.0.4-http://grails.orgLicensed under Apache standard License 2.0Grails home is set to: D: \grails-1.0.4No script name specified. Use 'grails help' for more info or 'grailsinteractive tc enter interactive mode如果出现了报错消息,应检查JDK和 Grails的环境变量是否正常。Liux下的安裝方法和 Windows下基本一致,也需要在解压完成后配置环境变量:但僧若在 Linux下解压完成后无法运行 grails命令,可能还需要检查一下hin目录下的 grails x件是否拥有执行权限。好了, Grails的安装已经完成了,难以置信的简单,不是吗?接下来,好好地去享受下使用 Grails i行开发的乐趣22创建 Grails工程安装成功后,在控制台输入命令 grails help,会得到一串详细的命令列表,如图2所小理员:二 AMindowstsystem3acmderNEeri any Shixing hails IH Lp,4-Http=∠/ai1,uEs.个rB面2xIa tenv ieennknt I- Itarget) Iarsumsntm I-Reallahio Fargets (typs gain ha Ip target -nan fw r norel info)cora tan Eeat图26 Grails的帮助信息4这些命令将为开发人员的开发、测试、部署提供巨大的帮助,在后面的章节里会有更详细的介绍。这里先使用一个名为 create-app的命令,去创建工程。rails create-appWelcometoGrails1.0,4-http://grails.orgicensed under Apache Standard License 2.0Grails home is set to: D: \grailG-1.0.4Base Directory: D: \workspaceNote: No plugin. scripts foundRunning script D: graiis-1. 0. 4\scripts\CreateApp groovyEnvironment set to developmentApplication name not specified. Please enter:最后一行 Grails提小输入程序名称:若输入 Hellograils并按 Enter键,就会发现 Grails创建了一个工程,该工程有比较复杂的目录结构和一些初始的文件:[mkdir] Created dir: D: workspace \HelloGrails\src[] Created dir: D: \workspace \HelloGrails\src\java[mkdir] Created cir: D: \workspace\HelloGrails\src\groovy[mkd:r) Created dir: D: \workspace\HelloGrails\grails-app[mkdir] Created dir: D: \workspace\HelloGrails\grails-app\controllersImkdir] : Created dir: D: \workspace \HelloGrails\grails-app\services[mkdir] Created dir: D: \workspace\HelloGrails\grails-app\comairImkdir] Created dir: D: \workspace \HelloGrails\grails-app\taglib[] Created dir: D:\wospace\HelloGrails\grails-app\utils[mkdir] Created dir: D: \workspace \HelloGrails\grails-app\views[mkdir] Created dir: D: \workspace\HelloGrails\grails-app\views\layouts[mkdir] Created dir: D: \ workspace\HelloGrails\grails-app\ilan[nkdir] Created dir: D: \workspace\HelloGrails\grails-app\conf[mkdir Created dir: D: \workspace \HelloGrails\testImkdir) Created dir: D: \workspace \HelloGrails\test \unit[mkdir] Created dir: D: \workspace\HelloGrails\test\integrationImkdirl Created dir: D: \workspace \HelloGrails\scripts[mkdirl Created dir: D: workspace\HelloGrails\web-appMkdir Created dir: D: \workspace\HelloGrasls \web-app\j3[mkdirl Created dir: D: \ workspace\HelloGrails\web-app\cssmkdirl Created dir: D: \workspace\HelloGrails\web-app\imagesIm kdirl Created dir: D: \workspace\ HelloGrails \web-app\META-INEInmkdirl Created dir: D: \workspace\HelloGrails\ lib[mkdir] Created dir: D: \workspace\HelloGrails\grails-app\conf\spring[mkdir] Created dir: D: \workspace\HelloGrails\grails-app\conf\hibernateIpropertyfilel Creating new property tile: D: \workspace\HelloGrails\appl:cation properties[copy] Copying 2 files to D: \workspace \HelloGrailsGrails技术精解与Web开发实践[copy] Copieto 1 emptynderD: \workspace\ HelloGrails.copy) Copying 2 files to D: \workspace \HelloGrails\web-app\WEB-INTEccpy] Copying 5 files to D: \workspace\HelloGrails\web-appWEB-INEtld[] Copying 28 files to D: \wor e\HelloGrails\grails-appAHelloGrails\weo-app[copy] Copying 18 files to D: \ workspaceTccpy Copying 1 file to D: \workspace\ HelloGrailsy] Copying 1 filHelloGrails[copy] Copying 1 file to D: \workspace\HelloGrailsIcopy] Copying、He11 gRai1opertytilel Updating propertyHelloGrails\application propertiesd Grails Applcn at. D: \workspace/HclloGrailsls创建的 Hellograils工程所包含目录结构的含义,如表21所示表21 Grails生成的项目目录结构目景说明MICHell工程根目求corail-tricon存放配置信息,包含包含数据源、应用程序启动时自动执行的类Application BootStrap, groovy,Url映射配置口 spring存放可选的 Spring配置文件Hibernate存放叫选的 Hibemate配置文件存放控制器(MVC的C)存放域类(MVC的M存放国际亿资源文件Eservices存放 service类存放标签库类存放GSP页面MVC的V,每个控制器对应一个文件夹并存放在vews中,每个文件夹中会有多个GSP页面)Layouts存放布局模板存放工具方法类存放单元测试代码存放集成测试代码olib存放其他jar包(如JDBC驱动等口s存放Java源程序存放源程序存放CSS样式表存放图片文件有放Jav文件IOWEB-INE存放部署相关的文件index,gsp应用程序默认的首这里读者可以体会到一点, Grails已经帮助开发人员改计好了很多东西,这是它所推6Hello Grails崇的约定胜于配置的思想。这可以让开发人员把更多精力集中在业务逻辑上,而不要为那些繁琐的项目配置浪费时间。2.3 Grails的MvC架构Grails学习了 Rails,也采用了MvC架构(见图2-7)。在 Grails中,“M”指的是 Domain类,可以简单地将这个 Domain理解为数据库里的一张表,个 Domain的实例则对应为该表的一条记录。通过操纵 Domain类的实例,就可以实现对数搪库进行增删查改操作。控制器“C”起到的是一个桥梁的作用,它能够接收用户提交的请求,它可以调用M获取数据并把数据传递给视图“V”。视图的作用是输出页面, Grails中的页面技术,使用的是与JsP非常相似但更加简单易用的GSP技术,可以使用网页编辑器进行编辑设计。控制器Controller浏览器提交滑求2制器调闰模型3.控制器选择视图并将模型的数据传绐视图4.视图向览器输出页面视图Model Domain)图27MVC架构的 grails执行流程这里的控制器和视图是一对多的关系,也就是说,一个控制器可能对应多个GSP页面。每个控制器都在 views文件夹中对应个同名的文件夹,而在这个文件中存放的就是它对应的GSP页面举个简单的例子,这里创建一个控制器。用 Grails Hg create-controller命令创建一个控制器。该控制器命名为helo>grails create-controller helloails1.0.4-http://grLicensed under Apache Standard License 2,0Grails home is set to: D: \ grails-1 0.4Base Directory: D: \workspace,HelloGrailsNote: Nc plugin scripts foundRunning script D: \grails-1. 0. 4\scriptsCreateControllergroovyEnvironment set to development[ copy] Copying l file to D: workspace \HelloGrails\grails-app\ controllersGrails技术精解与Web开发实践Created Controller for Hello[mkdirl Created dir: D: \workspace\ HelloGrails\grails-epp\views \hellIcopy] Copying 1 file to D: \workspace \HelloGrailstest\integrationCreated ControllerTests for Hello可以看到 grails创建了控制器类,在vews创建了名为helo的文件夹,还在test中创12)建了默认的测试程序。用任意的文本编辑器打开 grails-app controller\HelloControllergroovy文件,可以看到如下内容class Hellocontroller tdef index=(]这里的 def index={}是 Groovy不同于Java的种语法结构,叫做闭包。闭包是段代码的集合,与Java的方法类似,可以调用。在 Coutroller中,闭包有了新的含义,叫做 action。 Grails会根据清求的URL决定调用哪个 action:对上面的代码进行简单的修改如卜class HelloControllerrender('Hello World! Hello Grails!然后执行 grails的mn-ap命令来运行程序。>grails run-app当程序运行完成后,根据控制台输出的提示,打开任意的浏览器,访问地址htp: localhost:8080 Hello Grails/hello/ say,可看到如图2-8所示页面B Mozilla Firefox文件错()查00历央书具①帮助A访问最多鲁新手上路品最新多最 s Grails. org News FeedLhttp://localhost.rails/helloysayxHello World! Hello Grails!图2-8页面显示效果不要小看这个例子,它可以帮助理解 Grails的URL原理。个舆型的( Grails的URL表现为如下样式:http庄机名:端口/项目名称/控制器名/action名/工或其他参数1关于 Groovy语法的介绍可以参考下一章。草Hello Grails于是hp: localhost8 080/HelloGirails/ hello/say就表示访问 Hellograils项目的helo控制器的 say action。不过心细的读者可能会问,vew的作用是怎么体现的呢?本例直接使用render方法输出页面,因此其中并没有体现出view的作用。下面把view加入到例子中,在 grails-app\vicws hello文件夹中创建一个名为 say. gsp的文本文件。输入如下内容:stitlehelloFella sitextl]! Hello s(text2)/body>然后修改 Hellocontoller的内容如下class HelloController Ireturn [texel: ' World', text2: Grails'J新页面(无需重启Gral,即重新运行 run-app命令),就可以看到实现效果了,如图2-9所示。k hello_Mozilla firefox文(B编查看①历史⑤书工具①帮助c×(Chp809ahh/y访问是多鼻斜上品最解头费 Grails. org News FeedHelLo world! Helo Grails!图2-9使用GSP输吕的页面显示效果虽然看起来和之前的效果基本上是一样的,但这一次使用了view(GSP)来输出页面内容。这里有两个地方需要重点关注一下:一个是 Controller向GSP传,数据的方式, Controller是通过 action的返回值向GsP传递数据的,这个返回值是个Map,Map的key就成为了GSP页面中访问数据的变量名;另一个重要的地方是 Controller何对GSP页面进行选取,默认情况下, Controller会自动选择与 action同名的GSP去执行页面输出。现在, Hellograils里已经包含了控制器与视图。下面,我们把模型引入进来,如图2-10所小。1在( groovy中,如果法或闭包的最后一行是rtm语句,则 return可以省略。2详见下一章对( Groovy的集合,Map的介绍9Grails技术精解与Web开发实践控制器1.泓览器提交请求3.控制器跳转到视图,≤拉制器調用模型并将模型的数据传给视图4.视图句浏览器输出页面模型视图Model (Domain数据库View图2-10兰前例子中仅包含控制器与视图24 Scaffold应用程序Grails中的一个 Domain类,可以被简单地里解为是数据库中的一张表, grails推荐的开发方法与传统方法不同:不再是先设计项目的数据库,而是开发人员用OO( ObjectOriented,面向对象)的思想对数据进行O0建模(设计数据 DoMain类),然后运行 grails,Grails会根据 Domain.类的内容自动地生成数据库中的表当然,这个自动创建数据库不定是最优的,宁段长度、索引等还需要由有经验的DBA进行调整优化。Grails在相当程度上弱化数据库在项目中的作用。当然,这和自动刽建的数据库不可能满足所有的情况,至少对于历史遗留的数据库就是不适月的。本书第11会对GORM的数据库映射做深入的讨论,这里先只讨论最简单的情况:单表自动映射。Gils中包建 Domain的命令是 create-domain-class,如下所示>grails create-domain-class StudentWelcometoGrails1,0.4-http://grails.org/Licensed under apache Standard License 2.0s Grails home is set to: D: \grails-3.0.4Base Directory: D: \workspace \HelloGrailsNote: No plugin scripts foundRunning script D: \grails-1. 0. 4\scripts \ CreateDomainclassgroovyEnvironment set to develormentIcopy] Copying 1 file to D: \workspace\ HelloGrails\grails-app\domainCreated Domain Class for Student[copy! Copying 1 file to D: \workspace\ HelloGrails\test\integrationCreated Tests for student可以看到, grails创建了两个文件:一个是 Student类;另一个是对应的测试类。使用个文本编辑器打开 grails-app\domain\ Student. groovy,修改具内容如下:
下载地址
用户评论