




已阅读5页,还剩65页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Groovy轻松入门搭建Groovy开发环境1Groovy轻松入门通过与Java的比较,迅速掌握Groovy (更新于2007.09.23)3Groovy轻松入门Grails实战之遗留框架利用篇53Groovy轻松入门搭建Groovy开发环境 既然是入门,我先不介绍那些IDE的东西,比如Eclipse中的Groovy插件(如果您迫不及待的话,可以先看一下安装Groovy的Eclipse插件),我先讲一下如何设置Groovy的环境变量(我目前所用的系统是Windows XP),最后运行一个Hello, world程序告终。Groovy既然是Java帝国的王储,当然少不了Java的支持。0,先安装JDK(推荐版本为1.5及1.5以上,当然1.4也可以)然后设置Java的环境变量:1,设置环境变量java_home(设置环境变量XXX_home的一个好处是只要修改XXX_home的值,与之相关的%XXX_home%bin等的值都相应改变,这样就能做到一处修改,处处修改)右击我的电脑-属性 -高级- 环境变量- 点击新建(用户变量与系统变量均可,挑一便是)- 输入变量名为java_home - 输入变量值为JDK的所在目录(默认安装位置为C:Program FilesJavajdk1.6.0,我装的是JDK6.0)- 点击确定- 环境变量java_home设置成功2,设置环境变量path环境变量java_home设置好之后,我们开始设置环境变量path前面的步骤与设置环境变量java_home相同,到点击新建按钮时,选择新建用户变量(因为系统变量path已经存在,如果追加在长串已存在的path值后面,比较凌乱) - 输入变量名为path - 输入变量值为“%java_home%bin;” 不包括双引号“”3,设置环境变量classpath环境变量path设置好之后,我们开始设置环境变量classpath前面的步骤与设置环境变量java_home相同,到点击新建按钮时,选择新建系统变量(我的个人习惯,你也可以选择新建用户变量)- 输入变量名为classpath - 输入变量值为“.;%java_home%lib;”不包括双引号“”,注意不要漏了最前面的小圆点.如果你已经安装了JDK,并设置好了Java环境变量,请跳过上述过程,直接安装GDK(只需3步)(如果您下载的是Groovy安装版Download Windows-Installer: Binary Release/Download,请将安装过程中出现的选项都打上勾,以下4,5,6步骤可以跳过)请留意朝花夕拾Groovy & Grails中的Groovy最新稳定版的版本号4,下载GDK (/groovy/distributions/groovy-1.0.zip)并将下载的groovy-1.0.zip文件解压到指定位置(我的位置是D:DMY_DEVgroovy),5,设置环境变量GROOVY_HOME步骤与“设置环境变量java_home”类似,到 输入变量名时,输入GROOVY_HOME- 输入变量值为你解压指定位置(我的变量值为D:DMY_DEVgroovy),需要注意一点,解压目录如D:DMY_DEVgroovy中不可有空格,比如D:DMY DEVgroovy6,将GROOVY_HOME目录下的bin追加到环境变量path中步骤与“设置环境变量path”类似,找到你设置的path,然后将“%GROOVY_HOME%bin”追加到path值(按上述过程,你现在的path为“%java_home%bin;”) 之后,你的path值为“%java_home%bin;%GROOVY_HOME%bin” ,注意用英文分号;分开,不要有空白字符如空格,Tab等最后,我想提醒大家的是,不要将GROOVY_HOME目录下的jar包(比如GROOVY_HOMEembeddablegroovy-all-1.0.jar)添加到环境变量classpath中,因为Groovy自己会将GROOVY_HOMElib下的所有jar文件(其中包括了Groovy相关的jar文件,如groovy-1.0.jar)添加到Groovy的classpath中,而groovy同样会用Java的classpath(系统变量中的classpath),如果将Groovy相关jar文件如groovy-all-1.0.jar添加到环境变量classpath中,jar文件会产生冲突,今后的Groovy生活(如利用Grails方便快捷地开发Web应用)就将成为泡影 :)好了,现在请大家打开Windows下的dos,即命令行,在那个黑底白字的窗口中输入“groovyConsole”,回车,过一会儿就会出现一个GroovyConsole的窗口,在上面的文本域中,输入printlnHello,world!/打印Hello,world!然后按Ctrl + R 来运行你的第一个Hello, world程序,在下面的窗口中便可看到运行结果:Hello, world!祝贺你,第一个Groovy程序运行成功!Groovy轻松入门通过与Java的比较,迅速掌握Groovy 在前几篇文章中,我已经向大家介绍了Groovy是什么,学习Groovy的重要性等内容,还不了解Groovy的朋友不妨去看看我Blog中的 Groovy分类 。下面我将通过Groovy与Java的比较,解开Groovy的神秘面纱。Ready? Start! 注意:本教程是针对Groovy最新版本编写的 Groovy和Java的相同点有:3+, 4+, 6+, 8+, 10+, 12+, 13, 14, 15, 18+, 20+, 21, 22, 23, 28+, 29+, 30+, 31+, 32+ +表示Groovy不但涵盖了Java的语法,而且还有增强部分Groovy和Java的不 同 点有:0, 1, 2, 5, 7, 9, 11, 16, 17, 19, 24, 25, 26, 27下面所列序号不分先后顺序:0. 在Groovy可以用def定义无类型的变量(定义变量方面def与JavaScript中的var相似),和返回值为无类型的方法,而在Java中没有defGroovy:classMandefname=山风小子defintroduce()returnIm$name/return可以省略1. Java中的equals方法对应Groovy中的= , 而Java中的=(判断是否引用同一对象)对应Groovy中的is方法eg.Test1.java :publicclassTestpublicstaticvoidmain(Stringargs)Stringname1=山风小子;Stringname2=newString(山风小子);/Groovy中写为name1=name2if(name1.equals(name2)System.out.println(equal);elseSystem.out.println(notequal);/Groovy中写为name1.is(name2)if(name1=name2)System.out.println(identical);elseSystem.out.println(notidentical);与Test1.java相对应的Test1.groovy :Stringname1=山风小子/你也可以这样写:defname1=山风小子其中的def可以理解为JavaScript中定义变量的varStringname2=newString(山风小子)/请注意Groovy的句尾的分号时可选的,即可要可不要,前提是一行代码一条语句/Java中写为name1.equals(name2)if(name1=name2)System.out.println(equal);elseSystem.out.println(notequal);/Java中写为name1=name2if(name1.is(name2)System.out.println(identical);elseSystem.out.println(notidentical);2. Java中的数组定义int a = 1, 2, 3; 在Groovy写成int a = 1, 2, 33. Java中的for循环for (int i = 0; i len; i+) . 在Groovy中还可以写成for (i in 0.len-1) . 或者 for (i in 0.len) ./groovy1.5也支持for(;)Java:for(inti=0;ilen;i+)/dosomethingGroovy:for(inti=0;ilen;i+)/dosomething/或者for(iin0.len-1)/dosomething/或者for(iin0.grails create-app demoWelcome to Grails 1.0 - /Licensed under Apache Standard License 2.0Grails home is set to: D:DMY_DEVgrails-1.0Base Directory: D:_DEVgrails_appsEnvironment set to developmentNote: No plugin scripts foundRunning script D:DMY_DEVgrails-1.0scriptsCreateApp.groovy mkdir Created dir: D:_DEVgrails_appsdemosrc mkdir Created dir: D:_DEVgrails_appsdemosrcjava mkdir Created dir: D:_DEVgrails_appsdemosrcgroovy mkdir Created dir: D:_DEVgrails_appsdemograils-app mkdir Created dir: D:_DEVgrails_appsdemograils-appcontrollers mkdir Created dir: D:_DEVgrails_appsdemograils-appservices mkdir Created dir: D:_DEVgrails_appsdemograils-appdomain mkdir Created dir: D:_DEVgrails_appsdemograils-apptaglib mkdir Created dir: D:_DEVgrails_appsdemograils-apputils mkdir Created dir: D:_DEVgrails_appsdemograils-appviews mkdir Created dir: D:_DEVgrails_appsdemograils-appviewslayouts mkdir Created dir: D:_DEVgrails_appsdemograils-appi18n mkdir Created dir: D:_DEVgrails_appsdemograils-appconf mkdir Created dir: D:_DEVgrails_appsdemotest mkdir Created dir: D:_DEVgrails_appsdemotestunit mkdir Created dir: D:_DEVgrails_appsdemotestintegration mkdir Created dir: D:_DEVgrails_appsdemoscripts mkdir Created dir: D:_DEVgrails_appsdemoweb-app mkdir Created dir: D:_DEVgrails_appsdemoweb-appjs mkdir Created dir: D:_DEVgrails_appsdemoweb-appcss mkdir Created dir: D:_DEVgrails_appsdemoweb-appimages mkdir Created dir: D:_DEVgrails_appsdemoweb-appWEB-INFclasses mkdir Created dir: D:_DEVgrails_appsdemoweb-appMETA-INF mkdir Created dir: D:_DEVgrails_appsdemolib mkdir Created dir: D:_DEVgrails_appsdemograils-appconfspring mkdir Created dir: D:_DEVgrails_appsdemograils-appconfhibernatepropertyfile Creating new property file: D:_DEVgrails_perties copy Copying 2 files to D:_DEVgrails_appsdemo copy Copying 2 files to D:_DEVgrails_appsdemoweb-appWEB-INF copy Copying 5 files to D:_DEVgrails_appsdemoweb-appWEB-INFtld copy Copying 87 files to D:_DEVgrails_appsdemoweb-app copy Copying 17 files to D:_DEVgrails_appsdemograils-app copy Copying 1 file to D:_DEVgrails_appsdemo copy Copying 1 file to D:_DEVgrails_appsdemo copy Copying 1 file to D:_DEVgrails_appsdemopropertyfile Updating property file: D:_DEVgrails_pertiesCreated Grails Application at D:_DEVgrails_apps/demoD:_DEVgrails_apps通过“grails create-app”这个命令,Grails自动帮我们创建了开发所需的工程环境。其实您现在就已经拥有了一个可运行的Web应用程序,然后进入demo目录(“cd demo”),输入“grails run-app”,回车,启动这个五脏俱全的程序雏形,打开浏览器,输入 http:/localhost:8080/demo ,回车,看到了吧 :) 让我们继续吧,请停止这个程序(Ctrl + C)4,在“命令行”中输入“cd demo”,回车,以进入demo目录,然后再输入“grails create-domain-class User”创建domain class即类似于pojo的pogo,它对应MVC中的Model,不过由Grails自动创建的pogo是空的,需要自己添加属性,约束(constraints)等。输出结果如下所示:D:_DEVgrails_appsdemograils create-domain-class UserWelcome to Grails 1.0 - /Licensed under Apache Standard License 2.0Grails home is set to: D:DMY_DEVgrails-1.0Base Directory: D:_DEVgrails_appsdemoEnvironment set to developmentNote: No plugin scripts foundRunning script D:DMY_DEVgrails-1.0scriptsCreateDomainClass.groovy copy Copying 1 file to D:_DEVgrails_appsdemograils-appdomainCreated for User copy Copying 1 file to D:_DEVgrails_appsdemotestintegrationCreated Tests for UserD:_DEVgrails_appsdemo5,进入D:Tempgrails_appsdemograils-appdomain(这个目录中存放着所有的domain class),打开User.groovy,修改为如下内容: class UserStringnameStringpasswordStringtoString() $name:$password static constraints = name(blank: false )password(blank: false ,size: 6 . 16 )contraints这个类变量是定义一些约束的,比如name不能为空白,password不能为空白而且长度在6到16之间(包括6和16)6,在“命令行”中输入“grails generate-all User”,为User产生所有CRUD操作需要的代码(如控制器UserController.groovy)和页面(如list.gsp),输出结果如下所示:D:_DEVgrails_appsdemograils generate-all UserWelcome to Grails 1.0 - /Licensed under Apache Standard License 2.0Grails home is set to: D:DMY_DEVgrails-1.0Base Directory: D:_DEVgrails_appsdemoEnvironment set to developmentNote: No plugin scripts foundRunning script D:DMY_DEVgrails-1.0scriptsGenerateAll.groovy mkdir Created dir: D:_DEVgrails_appsdemoweb-appWEB-INFlib mkdir Created dir: C:Documents and SettingsDaniel.grails1.0projectsdemoclasses groovyc Compiling 7 source files to C:Documents and SettingsDaniel.grails1.0projectsdemoclasses mkdir Created dir: C:Documents and SettingsDaniel.grails1.0projectsdemoresourcesgrails-appi18nnative2ascii Converting 10 files from D:_DEVgrails_appsdemograils-appi18n to C:Documents and SettingsDaniel.grails1.0projectsdemoresourcesgrails-appi18n copy Copying 1 file to C:Documents and SettingsDaniel.grails1.0projectsdemoclasses copy Copying 1 file to C:Documents and SettingsDaniel.grails1.0projectsdemoresources copy Copying 1 file to C:Documents and SettingsDaniel.grails1.0projectsdemo0 spring.GrailsWebApplicationContext Refreshing mons.spring.GrailsWebApplicationContext2b2057: display name mons.spring.GrailsWebApplicationContext2b2057; startup date Tue Feb 05 23:26:45 CST 2008; root of context hierarchy16 spring.GrailsWebApplicationContext Bean factory for application context mons.spring.GrailsWebApplicationContext2b2057: org.springframework.beans.factory.support.DefaultListableBeanFactoryeebf17Generating views for domain class User .Generating controller for domain class User .Finished generation for domain class UserD:_DEVgrails_appsdemo7,修改demograils-appcontrollersUserController.groovy的内容为:classUserControllerdefloginService/新增的代码defindex=redirect(action:list,params:params)/thedelete,saveandupdateactionsonlyacceptPOSTrequestsdefallowedMethods=delete:POST,save:POST,update:POSTdeflist=if(!params.max)params.max=10userList:User.list(params)defshow=defuser=User.get(params.id)if(!user)flash.message=Usernotfoundwithid$params.idredirect(action:list)elsereturnuser:userdefdelete=defuser=User.get(params.id)if(user)user.delete()flash.message=User$params.iddeletedredirect(action:list)elseflash.message=Usernotfoundwithid$params.idredirect(action:list)defedit=defuser=User.get(params.id)if(!user)flash.message=Usernotfoundwithid$params.idredirect(action:list)elsereturnuser:userdefupdate=defuser=User.get(params.id)if(user)perties=paramsif(!user.hasErrors()&user.save()flash.message=User$params.idupdatedredirect(action:show,id:user.id)elserender(view:edit,model:user:user)elseflash.message=Usernotfoundwithid$params.idredirect(action:edit,id:params.id)defcreate=defus
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东高考化学试题(解析版)
- 销售工作题目大全及答案
- 葡萄酒盲品知识培训
- 2025联名合伙合同书范本版
- 2025高考物理试题分类汇编:万有引力与宇宙航行(解析版)
- 2025综合雇佣合同范本
- 2025-2026学年人教版六年级数学上册应用题平均数问题专项练习题【含答案】
- 物业安全操作试题及答案
- 2025车辆买卖协议合同
- 2025年公共自行车锁车器设备项目合作计划书
- 女装销售店长培训课件
- 2025年潍坊市中考物理真题卷(含答案)
- 连锁餐饮合伙合同范本
- 酒管专业导论考试题及答案
- 2025外研社小学英语四年级上册单词表(带音标)
- 2025至2030中国体育赛事行业市场发展分析及发展前景与投资报告
- 小学戏剧教学课本剧剧本集锦
- 【一年级上册语文统编版(2024)-第四单元汉语拼音】14. ang eng ing ong第二课时课件
- 2025年交管12123驾驶证学法减分及驾驶安全理论知识试题库(附含答案)
- 知识产权保护与服务平台创新创业项目商业计划书
- 2025年胎膜早破护理胎膜早破护理查房模板
评论
0/150
提交评论