小李的Grails基础教程2

 

1.6Grails 入门

与任何其他软件一样,在使用 Grails 之前首先必须安装它,操作如下:

步骤 1 :从官方网站 http://grails.org/ 下载最新发布的版本。

步骤 2 :将相关的压缩包解压到一个目录中,可以是专门用来开发的目录,也可以简单的直接解压到桌面上。

步骤 3 :设置 GRAILS_HOME 环境变量,值为步骤 2 中解压的 Grails 目录路径,设置环境变量的方法和操作系统有关,如果使用的是 windows ,可以右键单击“我的电脑”单击“属性”,然后在“高级”一栏中看到相关设置;其他操作系统,比如 Mac OS X (或者 UNIX ),可以将 GRAILS_HOME 加到用户根目录的配置文件( Profile )中,用“ cd ”可以进入用户根目录。

步骤 4 :为了能够在终端或者命令行窗口中运行 Grails 脚本,需要将 Grailsbin 目录加到系统环境变量“ PATH ”中,这样可使 Grails 脚本在窗口中可见,操作方法也与操作系统有关。

<!-- [if !supportLists]-->Ø <!-- [endif]-->在 windows 平台上,将 %$GRAILS_HOME%\bin 添加到 PATH 变量中(使用“ ; ”与其他路径分开)。

<!-- [if !supportLists]-->Ø <!-- [endif]-->在 Unix 平台上,将 %$GRAILS_HOME%\bin 添加到 PATH 变量中

为了验证安装是否成功,可以打开一个命令行窗口或者终端并且输入“ grails ”命令,如果成功将得到下面所示的结果

D:\>grails

Welcome to Grails 1.2.0.RC2 - http://grails.org/

Licensed under Apache Standard License 2.0

Grails home is set to: C:\grails\grails-1.2.0.RC2

No script name specified. Use 'grails help' for more info or 'grails interactive

' to enter interactive mode

当我们输入“ grails help ”后,会列出 Grails 的所有命令,使用这些命令式高效应用 Grails 的先决条件。而且从长远来看,了解正确的运行步骤会受益颇多。

……

grails create-app

grails create-controller

grails create-domain-class

grails create-filters

grails create-integration-test

……

grails war

1.6.1 运行 Grails 命令

只需在命令前使用“ grails ”就可以运行这些 Grails 命令,例如为了创建一个基本的 Grails 项目框架,只需要运行“ grails create-app ”命令即可。此外, Ant 还允许将多个任务合并成在一起运行。例如,如果要先对 Grails 项目进行测试,等测试成功后,再创建一个 Web 应用程序存档文件( Web Application Archive ,简称 WAR )以便发布到应用服务器上,这时可以直接输入如下命令:

grails test-app war

上面的命令组合先执行 test-app 命令,如果执行成功接下来继续执行 war 命令。随着对 Grails 各种命令的了解,读者可以通过实践来熟悉他们之间的组合方式。

让我们在来简单回顾总结下 Grails 的命令列表,其中 create-* 命令用于方便的创建应用工程和 Grails 的工件。然而与其他一些框架不同的是,这些命令本社并没有在后台做任何其他的处理,只是简单的生成架构。只所以这么做,一方面是因为使用 create-* 命令可以让 Grails 初学者快速上手;另一方面,通过学习生成的框架有助于进一步了解 Grails ,使得开发人员可以在熟悉的 IDE 中创建不同的类。

接下来介绍的是非常强大了 generate-* 命令,用他们生成样板代码,并且有助于 Grails 的学习过程和快速入门。

剩下的命令大多数用于运行 Grails 的应用程序,对 Web 程序进行单元测试及功能测试,以及创建 Web 应用程序存档文件。

1.6.2 义不容辞的“ Hello World !”

现在是时候初步实践一下 Grails 了,接下来让我们创建第一个 Grails 应用。按照传统,几乎所有的程序书都会包含“ Hello World !”实例,这里也从这个实例开始。为了实现“ Hello World !”,我们需要完成以下步骤。

步骤 1 :执行 grails create-app 命令来创建基本的 Grails 应用框架。

步骤 2 :创建控制器来处理 Web 请求

步骤 3 :使用控制器来显示某些文本。

步骤 4 :运行 Grails 应用,用浏览器查看运行结果。

稍后会详细介绍 Grails 用来创建工程的 create-app 命令,现在先来谈谈不同的 Grails 工程师如何共享一个通用的基础设施的。由于各个 Grails 工程都比较类似,因此一个熟悉 Grails 工程的程序员在项目中可以快说上手,同时也可以将其精力集中在解决实际问题的编码实现上而不是了解项目的基本布局结构上。

其实在 Java 领域,诸如 Maven 等开源项目已经引入了共享通用基础设施的概念。但是依然有很多的主流项目在使用自定制的 Ant 。这也解释了 JavaEE 规范的设计者所犯的一个比较严重的错误,即每个 Java Web 项目往往具有不同的结构和资源布局。由于这个问题并不是很容易解决的,因此 Grails 为所有项目提供了一个基本的通用结构。

现在让我们回到创建“ hello ”工程中来,首先需要运行 create-app 命令,它会提示输入要创建的工程的名字,我们输入 hello 并且回车,结果如清单 1.2 所示。

D:\>grails create-app

……

Application name not specified. Please enter:

Hello

输入完毕, Grails 会自动创建名为“ hello ”的 Grails 工程和必要的目录结构

 

目前我们需要关注的是 Grails 至少包括控制器( Controllers )、领域( Domain )对象(模型)和视图( Viewer )这三个目录。

Grails 按照 MVC 模式将模型、视图和控制器进行了分离。为了显示“ Hello World !”我们目前只需要关注控制器就可以了,而且控制器是所有 MVC 框架的核心,这一点 Grails 与其他框架是相同的。实际上只有创建了控制器, Grails 才能处理 Web 请求。同创建 Grails 工程一样, Grails 也提供了创建控制器的命令—— create-controller ,再输入“ hello ”作为创建的控制器名称并回车,所有操作如下所示:

D:\hello>grails create-controller

……

Controller name not specified. Please enter:

mywork.hello

……

Created Tests for Hello

该命令将在 grails-app\controllers\mywork 目录下创建一个 HelloController 的控制器,与此同时,在 test\unit\mywork 目录下创建名为 HelloTests.groovy 的单元测试。刚创建出来的控制器文件内容如下:

package mywork

class HelloController {

def index = { }

}

正如清单所示,当前的控制器仅仅包含了一个名为“ index ”的空操作。控制器会将 Web 的请求委托给操作处理。<!-- [endif]-->

我们需要修改 HelloController 控制器,并且新增一个名为 world 的操作。其实操作既是闭包也是属性,在下一章中会了解到更多的闭包知识。现在只需参照下面的程序来增加一个 world 的操作。

package mywork

class HelloController {

def world = { render 'Hello World!'}

}

上述示例定义了一个 world 操作,其目的是将“ Hello World ”显示到客户端。这里的 render 方法是 Grails 的一个内建方法。为了运行“ Hello World !”示例,需要输入以下命令来启动 Grails 应用程序。

grails run-app

应用程序在启动完毕后,可以打开浏览器并按照图 3 所示的规则在地址栏输入 URLGrails 启动后的默认端口号是 8080 )。

 


Grails 默认为自动地将 URL 的路径对应到特定操作( Action )上,图 3 所示的上下文路径( Context Path )是应用的根路径,而且在最终发布的环境中,根据需要可以完全去掉。接下来, URL 的控制器( Controller )名部分是取自 HelloController 类名的第一部分,它是由控制器的类名去掉 Controller 后缀再将第一个字符消协得到的。最后 URL 的结尾部分是操作名,将被映射到控制器的一个操作上去。

最后运行的结果将如图 2 所示在客户端浏览器上显示“ Hello World !”。但是现在我们不仅要向用户显示 hello 信息,又想要显示一些更有用的东西,比如当前时间等。为了让控制器可以控制对日期和时间消息的显示,需要再次打开控制器 HelloController ,并且编辑 world 操作,保存后结果应该如下所示。

package mywork

class HelloController {

def world = { render 'Hello World it is '+new java.util.Date()}

}

上面控制器中的的 world 操作把字符串“ Hello World !”和 JDK 标准日期类 java.util.Date 的实例连接起来,修改保存完毕后,并不需要重新启动服务器,只需重新刷新一下浏览器就可以看到刚才所做的修改,本例中在浏览器上会显示“ Hello world ”和当前的日期与时间,不需要重新编译,不需要重新构建,也不需要打包。

这个简单的示例演示 Grails 一些重要的特性,比如 MVC 架构的实现,与 Java 的紧密集成(使用了 java.util.Date 类),以及通过自动加载实现的迭代开发模式。作为一次初步的尝试就到此为止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值