1、 下载安装JDK 1.5或者更高版本,下载安装Grails
2、 创建 .bat 文件,文件:
set JAVA_HOME=C:\\Java\\jdk1.6.0_13 set GROOVY_HOME=E:\\2G\\groovy-1.6.3
set path=%JAVA_HOME%/bin;%GROOVY_HOME%/bin;%path% cmd
在控制台下输入 grails help,如果能看到 Grails 的命令列表,Grails 的安装配置就算成功了。
图 3. 检验 Grails 是否安装成功
3、 创建一个 Grails 应用程序
创建 Grails 应用程序需要使用 grails create-app 命令,在控制台输入: grails create-app Contact
Grails 会为我们创建一个名叫“Contact”文件夹,并在其中生成一个应用程序框架,生成的应用
程序目录结构如下:
表 1. Contact 应用文件目录结构
Contact + grails-app
+ conf + controller + domain
存放配置信息,包含数据源、应用程序启动时自动执行的类ApplicationBootStrap.groovy, Url 映射配置 存放控制器(“MVC”的“C”) 存放域类(“MVC”的“M“)
+ i18n 存放国际化资源文件 存放 service 类
+ services
+ taglib 存放标签库类
+ views 存放视图模版(“MVC”的 V,每个控制器对应一个文件夹并存放在
Views 中,每个文件夹中会有多个 GSP 页面)
+ layouts 存放布局模板
+ grails-tests 存放测试代码
+ hibernate 存放可选的其它 Hibernate 配置文件 + lib 存放其它 Jar 包(如 JDBC 驱动等) + spring 存放可选的 Spring 配置文件 + src
+ java 存放 Java 源程序 + groovy 存放 Groovy 源程序 + web-app
+ css + js
存放 CSS 样式表 存放图片文件 存放 JavaScript 文件 存放部署相关的文件 应用程序的首页
+ images
+ WEB-INF + index.gsp
从上述目录结构可以看出 Grails 的“约定优于配置”设计理念,它约定了不同层次代码存放的位置以及项目的组织方式,这既提供了一种最佳实践,同时也节省了开发人员配置项目的精力。 添加 Domain Class
接下来,为刚创建好的项目添加一些功能。首先创建两个 Domain Class。前面说过,Domain
Class 实质上是数据库表映射的实体类。通过控制台,进入项目的根文件夹(注意:本文出现一切
的控制台输入,除 create-app 外,都需要在项目文件夹中执行),输入 grails create-domain-class Team
图 4. 创建 Domain Class
新创建的 Domain 类出现在了 grails-app/domain 文件夹中,同时 Grails 还创建了相应的 Test
类。用记事本打开 grails-app\\domain 文件夹中的 Team.groovy,加入如下内容:
class Team {
String teamName Date foundDate }
这两行代码描述了 Team 所包含的属性,从代码中可以看出 Groovy 语言的一些特点:
1. 无需“;”结尾(有“;”也不会报错); 2. 简单数据类型,与 Java 相同; 创建 Controller
接下来为 Domain Class Team 类创建 Controller,在控制台输入 grails create-controller Team Grails 会在 grails-app/controller 中创建一个名为 TeamController 的类。编辑 TeamController.groovy 文件。加入如下代码:
class TeamController {
def scaffold = Team }
不要小看这仅有的一行代码,它使 Team 表有了相应的 CRUD(增、删、查、改)功能的页面。
在控制台中输入 grails run-app,运行应用以查看效果:
图 5. Team list page
图 6. Show Team page
图 7. Edit team page
一些疑问
前面的例子演示了如何使用 Grails 快速开发一个应用。如果使用 Struts 之类的 Java Web 框架
开发一个类似上述的功能可能要花几个小时的时间,而使用 Grails 只用了不到五分钟可以完成了
创建。对 Grails 的“快”您应该有了一个比较直观的感受了吧?

