在Eclipse下构建Grails项目.docx
- 文档编号:10905544
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:15
- 大小:1.51MB
在Eclipse下构建Grails项目.docx
《在Eclipse下构建Grails项目.docx》由会员分享,可在线阅读,更多相关《在Eclipse下构建Grails项目.docx(15页珍藏版)》请在冰豆网上搜索。
在Eclipse下构建Grails项目
1、下载安装JDK1.5或者更高版本,下载安装Grails
2、创建.bat文件,文件:
setJAVA_HOME=C:
\Java\jdk1.6.0_13
setGROOVY_HOME=E:
\2G\groovy-1.6.3
setpath=%JAVA_HOME%/bin;%GROOVY_HOME%/bin;%path%
cmd
在控制台下输入grailshelp,如果能看到Grails的命令列表,Grails的安装配置就算成功了。
图3.检验Grails是否安装成功
3、创建一个Grails应用程序
创建Grails应用程序需要使用grailscreate-app命令,在控制台输入:
grailscreate-appContact
Grails会为我们创建一个名叫“Contact”文件夹,并在其中生成一个应用程序框架,生成的应用
程序目录结构如下:
表1.Contact应用文件目录结构
Contact
+grails-app
+conf存放配置信息,包含数据源、应用程序启动时自动执行的类ApplicationBootStrap.groovy,Url映射配置
+controller存放控制器(“MVC”的“C”)
+domain存放域类(“MVC”的“M“)
+i18n存放国际化资源文件
+services存放service类
+taglib存放标签库类
+views存放视图模版(“MVC”的V,每个控制器对应一个文件夹并存放在
Views中,每个文件夹中会有多个GSP页面)
+layouts存放布局模板
+grails-tests存放测试代码
+hibernate存放可选的其它Hibernate配置文件
+lib存放其它Jar包(如JDBC驱动等)
+spring存放可选的Spring配置文件
+src
+java存放Java源程序
+groovy存放Groovy源程序
+web-app
+css存放CSS样式表
+images存放图片文件
+js存放JavaScript文件
+WEB-INF存放部署相关的文件
+index.gsp应用程序的首页
从上述目录结构可以看出Grails的“约定优于配置”设计理念,它约定了不同层次代码存放的位置以及项目的组织方式,这既提供了一种最佳实践,同时也节省了开发人员配置项目的精力。
添加DomainClass
接下来,为刚创建好的项目添加一些功能。
首先创建两个DomainClass。
前面说过,Domain
Class实质上是数据库表映射的实体类。
通过控制台,进入项目的根文件夹(注意:
本文出现一切
的控制台输入,除create-app外,都需要在项目文件夹中执行),输入grailscreate-domain-classTeam
图4.创建DomainClass
新创建的Domain类出现在了grails-app/domain文件夹中,同时Grails还创建了相应的Test
类。
用记事本打开grails-app\domain文件夹中的Team.groovy,加入如下内容:
classTeam{
StringteamName
DatefoundDate
}
这两行代码描述了Team所包含的属性,从代码中可以看出Groovy语言的一些特点:
1.无需“;”结尾(有“;”也不会报错);
2.简单数据类型,与Java相同;
创建Controller
接下来为DomainClassTeam类创建Controller,在控制台输入grailscreate-controllerTeam
Grails会在grails-app/controller中创建一个名为TeamController的类。
编辑
TeamController.groovy文件。
加入如下代码:
classTeamController{
defscaffold=Team
}
不要小看这仅有的一行代码,它使Team表有了相应的CRUD(增、删、查、改)功能的页面。
在控制台中输入grailsrun-app,运行应用以查看效果:
图5.Teamlistpage
图6.ShowTeampage
图7.Editteampage
一些疑问
前面的例子演示了如何使用Grails快速开发一个应用。
如果使用Struts之类的JavaWeb框架
开发一个类似上述的功能可能要花几个小时的时间,而使用Grails只用了不到五分钟可以完成了
创建。
对Grails的“快”您应该有了一个比较直观的感受了吧?
虽然现在程序已经实现了对Team表的CRUD操作,但读者可能会有如下的几个疑问:
1.数据库在哪?
2.如何修改页面的外观?
3.URL与Controller的对应关系是什么?
4.表单能做验证吗?
配置数据库
实现了CRUD,为什么没有配置数据库呢?
Grails为用户提供的一个内置的轻量级数据库hsqldb,虽然在性能和功能上难以满足要求,但是
对于演示scaffold还是绰绰有余的。
当然,我们可以用MySQL去替换它,下面就来演示这个过
程(如果读者不想使用MySQL去替换hsqldb,可以跳过下面的内容)。
首先修改grails-app\conf\DataSource.groovy:
dataSource{
pooled=false
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="***"
}
hibernate{
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class='org.hibernate.cache.EhCacheProvider'
}
//environmentspecificsettings
environments{
development{
dataSource{
dbCreate="update"//oneof'create','create-drop','update'
url="jdbc:
mysql:
//localhost:
3306/Contact_dev"
}
}
test{
dataSource{
dbCreate="update"
url="jdbc:
mysql:
//localhost:
3306/Contact_test"
}
}
production{
dataSource{
dbCreate="update"
url="jdbc:
mysql:
//localhost:
3306/Contact_prod"
}
}
}
Grails默认要求提供三个数据库,分别用于开发、测试和产品环境。
修改连接的Driver名称、用户名密码以及三个数据库的URL,保存。
接下来分别创建上述三个数据库,并把MySQL的JDBC驱动程序拷贝到lib文件夹中。
接下来,重新运行项目(grailsrun-app),Grails会自动为DomainClass创建相应的数据库
表。
至此,Team的CRUD程序就运行在MySQL之上了。
修改页面外观
使用scaffold实现的CRUD实际上并没有创建GSP页面,所以无法定制View内容。
在Grails中,可以使用grailsgenerate-all命令为指定的DomainClass创建实现CRUD操作的
Controller和View。
所以,在控制台运行(如果提示TeamController已存在,是否覆盖?
请
选"是"):
grailsgenerate-allTeam
Grails会在grails-app\views\目录中创建一个名叫team的文件夹,文件夹的名称刚好和
controller一一对应。
team文件夹中包含了4个GSP文件,分别是create.gsp、list.gsp、
edit.gsp和show.gsp。
这几个页面和之前scaffold实现的功能是一致的。
修改这几个页面的代
码,即可以定制页面的外观。
URL与Controller的命名约定
打开generate-all命令产生的Controller即TeamController.groovy文件,可以看到如下内容:
classTeamController{
defindex={redirect(action:
list,params:
params)}
//thedelete,saveandupdateactionsonlyacceptPOSTrequests
defallowedMethods=[delete:
'POST',save:
'POST',update:
'POST']
deflist={
if(!
params.max)params.max=10
[teamList:
Team.list(params)]
}
defshow={
[team:
Team.get(params.id)]
}…
其中defxxx={xxx}的结构在Groovy语言中叫闭包(Closure),在Controller中,每个闭包对应为一个Action,即处理一个特定的Web请求。
然后看看GrailsURL的命名原则:
http(s):
//host:
pot/ProjectName/ControllerName/ActionName/Parameters
表单的验证
Grails对表单的验证提供了强大的支持,可以使用DomainClass的验证来实现表单的验证。
修改Team.groovy文件:
classTeam{
StringteamName
DatefoundDate
staticconstraints={teamName(size:
3..50,blank:
false,unique:
true)
}
}
在Team类中加入个名叫constraints的静态Closure,并在其中描述验证逻辑:
team的字符串长度在3~50之间、不能为空、而且是唯一的。
(注意早期版本的Grails使用length限定字符串的长度,在V0.5以后改为了size保存Team.groovy,重新运行Contact,会发现验证逻辑已经可以工作了:
图8.表单验证
但验证失败后报出的错误信息对用户来说并不友好。
想要修改这些内容,需要编辑grailsapp\i18n中的资源文件
使用Grails快速开发Web应用程序
使用Eclipse搭建开发环境
下面主要介绍Groovy插件的安装方法:
首先启动Eclipse,点击Help>SoftwareUpdates>FindandInstall…:
图9.更新和安装
在弹出窗口中选择Searchfornewfeaturestoinstall点击Next:
图10.查找新特性
然后在新窗口中点击NewRemoteSite...,并在弹出窗口中输入:
Name:
Groovy
URL:
http:
//dist.codehaus.org/groovy/distributions/updateDev/
图11.添加ClasspathVariables
然后还需要禁用Groovy插件的Classautogenerate的功能,在Contact上右键>Properties>GroovyProjectproperties>选择DisableGroovyCompilerGeneratingclassFiles>点击OK:
***************************************************************************
这里注意导入项目后在项目中禁用DisableGroovyCompilerGeneratingclassFiles可能会导致项目报一个Spring文件的错误,如果报错暂时先不禁用该功能,
之后可在Eclipse的Window中禁用该功能
***************************************************************************
图12.禁用Classautogenerate
接下来,配置使Webtools能够编辑GSP。
打开Windows>Preference>General>Editors>FileAssociations,添加*.gsp,并关联到JSPEditor即可:
图13.将gsp关联到JSPEditor
然后设置ContentTypes:
Windows>Preference>General>ContentTypes,为JSP类型文件添加扩展名*.gsp:
图14.为JSP类型文件添加扩展名*.gsp
至此,开发环境配置完毕。
Grails已经为Eclipse创建了描述运行的文件,点击Run>OpenRunDialog。
图15.运行
可以在JavaApplication下看到名为Contact的运行项目。
选择并点击Run按扭。
但Grails提供的run脚本目前还存在bug,运行时可能会抛出如下异常:
java.lang.IllegalArgumentException:
Variable$tools.jaringroovy-starter.conf
referencesanon-existentSystemproperty!
TrypassingthepropertytotheVMusing-Dtools.jar=myValue
因此最后还需要修改Contact的运行参数,加入:
-Dtools.jar=%JAVA_HOME%\lib\tools.jar
图16.修改Contact运行参数
现在,可以在Eclipse下运行和调试Grails程序了。
***************************************************************************
此时如果遇到:
groovy.lang.MissingMethodException:
Nosignatureofmethod:
groovy.util.ConfigSlurper.parse()isapplicableforargumenttypes:
(DataSource)values:
%7BDataSource@...}错误。
则确认一下是否已经禁用Groovy插件的Classautogenerate,以及删除项目目录下的所有class文件。
*********************************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Eclipse 构建 Grails 项目