GRAILS2入门 - 参考文档

作者:格雷姆罗彻,彼得Ledbrook,马克·帕尔默,杰夫·布朗,卢克 - 戴利,伯特·贝克威思

 版本:2.2.3

2.1安装要求

Grails的安装前,你至少需要安装Java开发工具包(JDK)1.6或更高版本。为你的操作系统下载相应的JDK,运行安装程序,然后设置一个环境变量JAVA_HOME指向此安装的位置。如果你不确定如何做到这一点,我们建议在grailsexample.net观看视频安装指南:

•windows

•Linux

•Mac OS X

 这些会告诉你如何安装Grails也不仅仅是JDK。

!!!Grails开发环境中的JDK是必需的。仅有JRE是不够的。

在一些平台上(例如OS X)的Java安装自动检测。然而,在许多情况下,你将要手动配置Java的位置。例如:

exportJAVA_HOME=/Library/Java/Home

export PATH="$PATH:$JAVA_HOME/bin"

2.2下载和安装

开始和运行Grails的第一步是安装分发的Grails框架文件。请按照下列步骤操作:

•下载一个二进制分发的Grails生成的zip文件,并提取到你选择的位置

•将zip文件解压缩至GRAILS_HOME环境变量设置的位置

•在Unix / Linux系统,添加到类似这样的位置:GRAILS_HOME=path/to/ grails你的个人资料

•在Windows中,这通常是在“我的电脑”/高级/环境变量/设置环境变量

•然后将bin目录添加到PATH环境变量:

•在Unix / Linux系统,可以通过加入export PATH=$ PATH:$ GRAILS_HOME/ bin来设置

•在Windows中,可以通过修改Path环境变量,在我的电脑/高级/环境变量

 如果Grails正常工作了,你现在应该能够键入Grails的版本在终端窗口中看到类似这样的输出:

Grailsversion: 2.0.0

2.3创建一个应用程序

要创建一个Grails应用程序你首先需要熟悉grails命令的用法,以下列方式使用:

grails [commandname]

运行create-app来创建一个应用程序:

grailscreate-app helloworld

这将创建一个新的目录,里面包含当前项目。在你的控制台,导航到这个目录:

cd helloworld

2.4 Hello World例子

现在让我们把它变成经典的“Hello world!”例子。首先,进入“HelloWorld”目录,启动Grails控制台,键入以下命令:

$ cd helloworld

$ grails

你应该看到一个提示,看起来像这样:

我们想要的是一个简单的页面,只是输出消息“Hello World!”到浏览器。 Grails中,每当你想要一个新的页面,你只需创建一个新的控制器动作。由于我们尚未有一个控制器,让我们创建一个,使用“create-controller”命令:

grails>create-controller hello

不要忘了,在交互式控制台命令名,我们有自动完成功能。因此,你可以键入“cre”,然后按<tab>键,可以得到所有的create-*命令的列表。键入几个字母的命令名,然后再次<TAB>完成。

 上面的命令将在grails-app/controllers/helloworld的目录创建一个新的controller称为HelloController.groovy。为什么会创建HelloWorld目录?因为在Java领域,强烈建议将所有的类都放到包里,所以如果你不提供一包名,Grails默认将应用程序的名称作为包名。create-controller的参考页提供了更多细节。

我们现在有一个控制器,让我们添加一个动作将“Hello World!”渲染到页面。代码看起来像这样:

package helloworld

classHelloController {

    def index() {

        render "Hello World!"

    }

}

action是一个简单的方法。在这种特定的情况下,它会调用Grails提供的一种特殊的方法来渲染(render)页面。

 完成这项工作。要在行动中看到你的应用程序,你只需要启动一个服务器与另一个称为run-app的命令:

grails>run-app

这将启动嵌入式服务器在8080端口上承载的应用程序。你现在应该能够访问你的应用程序在URL为 http://localhost:8080/helloworld/ 试试吧!

 !!!如果你看到错误“服务器无法启动8080端口:地址已在使用”,那么就意味着该端口的另一台服务器上运行。在你的服务器上运行Dserver.port=9090 run-app设置使用不同的端口,就可以轻松地解决这个问题。 '9090'仅仅是一个例子:你几乎可以选择1024至49151范围内的任何数字。

 结果会是这个样子

 

这是由grails-app/view/index.gsp文件呈现的Grails介绍页面。它可以检测你的控制器的存在,并提供给他们的链接。你可以通过点击“HelloController”链接看到我们的自定义页面中包含文本的“Hello World!”。瞧!你已经构建了你的第一个Grails应用程序。

最后一件事:一个控制器可以包含许多动作,每一个都对应到不同的页面(AJAX例外)。每一页是可以通过一个唯一的URL,是由从控制器的名称和动作名称组成:/<appname>/<Controller>/<ACTION>。这意味着你可以访问的HelloWorld页面通过的HelloWorld/hello/index,其中'hello'是控制器的名称(去掉'控制器'后缀的类名,小写第一个字母),“index”是动作名称。但你也可以通过相同的URL不加action的名称来访问页面,这是因为“index”是默认的动作。参看后面controller 和action用户指南,以了解更多关于默认操作的内容。

2.5使用交互模式

Grails的2.0设有一个交互模式,使命令的执行更快,因为在JVM不必为每个命令重新启动。使用交互模式很简单,在Grails的任何项目的根目录借助TAB键,得到一个可用的命令列表。见下面的截图中的一个例子:

要了解更多关于交互模式的信息,请参见用户指南中的互动模式一节。

 2.6相关IDE的设置

Eclipse

我们建议用户寻求开发Grails应用程序的Eclipse Groovy/ Grails的工具套件,它提供了内置的Grails的支持包括自动的类路径管理,GSP编辑器和快速访问Grails命令。见STS集成页面的概述。

 NetBeans

NetBeans提供一个Groovy/ Grails的插件,可自动识别的Grails项目,并提供Grails支持,使应用程序能够运行在IDE,与GlassFish服务器的代码完美整合。相关功能的概述,请参见NetBeans集成Grails指南的网站,由NetBeans团队提供。

 TextMate

由于Grails的特点就是简单,可以利用更简单的编辑。Mac上的TextMate包含扩展的Groovy/ Grails的软件包,可从Texmatebundles SVN获得。

 Grails整合TextMate,运行以下命令:

grailsintegrate-with --textmate

TextMate可以很容易地打开任何项目,在命令行进入你的项目的根目录,输入以下命令:

mate .

2.7约定优于配置

Grails使用“约定优于配置”来配置自己。这通常意味着文件的名称和位置都是一定的,而不需要配置即可使用,因此你需要熟悉Grails提供的目录结构。

这里是一些约定的内容:

•grails-app - - Groovy源码的顶层目录

•conf - 源配置。

•controllers- web控制器 - MVC中的C。

•domain - 应用程序域。

•i18n - 国际化(i18n)支持。

•services - 服务层。

•taglib - 标签库。

•utils -Grails的特定的实用程序。

•views -Groovy服务器页面 - MVC中的V。

•scripts -Gant脚本。

•src - 源

•groovy - 其他的Groovy源

•java - 其他的Java源代码

•test - 单元和集成测试。

 2.8运行应用程序

Grails可以使用内置的Tomcat服务器运行应用程序。run-app命令将加载默认在8080端口上的服务器:

grails run-app

你可以使用server.port命令来指定不同的端口:

grails-Dserver.port=8090 run-app

请注意,这是在交互模式下重新启动容器更好的选择,启动应用更快:

$ grails

grails>run-app

| Serverrunning. Browse to http://localhost:8080/helloworld

| Applicationloaded in interactive mode. Type 'stop-app' to shutdown.

| Downloading:plugins-list.xml

grails>stop-app

| StoppingGrails server

grails>run-app

| Serverrunning. Browse to http://localhost:8080/helloworld

| Applicationloaded in interactive mode. Type 'stop-app' to shutdown.

| Downloading:plugins-list.xml

run-app命令的更多信息,请参考指南。

 2.9测试应用程序

Grails中的create-*命令会在test/unitor test/integration目录自动为你创建的单元或集成测试。这当然是由你来填充这些测试有效的测试逻辑,更多的信息请参看测试部分。

执行测试运行test-app命令:

grails test-app

2.10部署应用程序

Grails应用程序部署为Web应用程序归档文件(WAR文件),在Grails的命令行执行此命令:

grails war

这将产生一个WAR文件。

 不像大多数脚本默认的开发环境,除非覆盖,war命令默认情况下,在生产环境中运行。我们也可以覆盖此指定的环境名称,例如:

grails dev war

!!!从来没有部署Grails的使用run-app命令,此命令设置的Grails自动重装。在运行时,有一个严重的性能和可扩展性的影响。

 当部署Grails之后,你应该为你的容器JVM服务器选项,并分配足够的内存。一套好的VM标志将是:

-server -Xmx512M-XX:MaxPermSize=256m

2.11 Java EE容器支持

Grails的运行在任何支持Servlet2.5及以上的容器:

·        Tomcat 7

·        Tomcat 6

·        SpringSource tc Server

·        Eclipse Virgo

·        GlassFish 3

·        GlassFish 2

·        Resin 4

·        Resin 3

·        JBoss 6

·        JBoss 5

·        Jetty 8

·        Jetty 7

·        Jetty 6

·        Oracle Weblogic 10.3

·        Oracle Weblogic 10

·        Oracle Weblogic 9

·        IBM WebSphere 8.5

·        IBM WebSphere 8.0

·        IBM WebSphere 7.0

·        IBM WebSphere 6.1

!!!需要设置“Xverify:没有”中的“应用程序服务器>服务器>进程定义> Java虚拟机>通用JVM参数”用于WebSphere。

有些容器有错误,但是,在大多数情况下都可以工作。 Grails的wiki站点上可以找到已知的部署问题的列表。

 2.12生成一个应用程序

快速上手使用Grails经常用到的一个功能叫做脚手架,就是生成一个应用程序的骨架。要做到这一点使用的generate-*命令,如generate-all,这将产生一个控制器(单元测试)和相关的视图:

grailsgenerate-all Book

2.13创建工件

Grails提供一些便利的目标,如创建控制器,创建域级等,为你将创建控制器等各种类型的工件。

这些都只是为了你的方便,你可以很容易地使用IDE或你喜爱的文本编辑器。

例如,要创建一个应用程序,你通常需要一个域模型的基础:

grailscreate-domain-class book

结果是在grails-app/domain/Book.groovy在创建一个域类,如:

class Book {

}

有很多这样的create-*命令,可以参考指南。

为了减少运行Grails脚本需要的时间,使用交互模式。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 简介 2. 起步 2.1 下载并安装Grails 2.2 创建一个Grails应用 2.3 Hello World示例 2.4 使用IDE 2.5 规约配置 2.6 运行Grails应用 2.7 测试Grails应用 2.8 部署Grails应用 2.9 所支持的Java EE容器 2.10 创建工件 2.11 生成Grails应用 3. 配置 3.1 基本配置 3.1.1 内置选项 3.1.2 日志 3.2 环境 3.3 数据源 3.3.1 数据源和环境 3.3.2 JNDI数据源 3.3.3 自动数据库移植 3.4 外部配置 3.5 定义版本 4. 命令行 4.1 创建Gant脚本 4.2 可复用的Grails脚本 4.3 脚本中的事件 4.4 Ant和Maven 5. 对象关系映射(GORM) 5.1 快速指南 5.1.1 基本的CRUD 5.2 在GORM中进行领域建模 5.2.1 GORM中的关联 5.2.1.1 一对一 5.2.1.2 一对多 5.2.1.3 多对多 5.2.2 GORM的组合 5.2.3 GORM的继承 5.2.4 集合、列表和映射 5.3 持久化基础 5.3.1 保存和更新 5.3.2 删除对象 5.3.3 级联更新和删除 5.3.4 立即加载和延迟加载 5.3.4 悲观锁和乐观锁 5.4 GORM查询 5.4.1 动态查找器 5.4.2 条件查询 5.4.3 Hibernate查询语言 5.5 高级GORM特性 5.5.1 事件和自动实现时间戳 5.5.2 自定义ORM映射 5.5.2.1 表名和列名 5.5.2.2 缓存策略 5.5.2.3 继承策略 5.5.2.4 自定义数据库标识符 5.5.2.5 复合主键 5.5.2.6 数据库索引 5.5.2.7 乐观锁和版本定义 5.5.2.8 立即加载和延迟加载 5.6 事务编程 5.7 GORM和约束 6. Web层 6.1 控制器 6.1.1 理解控制器和操作 6.1.2 控制器和作用域 6.1.3 模型和视图 6.1.4 重定向和链 6.1.5 控制器拦截器 6.1.6 数据绑定 6.1.7 XML和JSON响应 6.1.8 上传文件 6.1.9 命令对象 6.2 Groovy Server Pages 6.2.1 GSP基础 6.2.1.1 变量和作用域 6.2.1.2 逻辑和迭代 6.2.1.3 页面指令 6.2.1.4 表达式 6.2.2 GSP标签 6.2.2.1 变量和作用域 6.2.2.2 逻辑和迭代 6.2.2.3 搜索和过滤 6.2.2.4 链接和资源 6.2.2.5 表单和字段 6.2.2.6 标签作为方法调用 6.2.3 视图和模板 6.2.4 使用Sitemesh布局 6.3 标签库 6.3.1 简单标签 6.3.2 逻辑标签 6.3.3 迭代标签 6.3.4 标签命名空间 6.4 URL映射 6.4.1 映射到控制器和操作 6.4.2 嵌入式变量 6.4.3 映射到视图 6.4.4 映射到响应代码 6.4.5 映射到HTTP方法 6.4.6 映射通配符 6.4.7 自动重写链接 6.4.8 应用约束 6.5 Web Flow 6.5.1 开始和结束状态 6.5.2 操作状态和视图状态 6.5.3 流执行事件 6.5.4 流的作用域 6.5.5 数据绑定和验证 6.5.6 子流程和会话 6.6 过滤器 6.6.1 应用过滤器 6.6.2 过滤器的类型 6.6.3 过滤器的功能 6.7 Ajax 6.7.1 用Prototype实现Ajax 6.7.1.1 异步链接 6.7.1.2 更新内容 6.7.1.3 异步表单提交 6.7.1.4 Ajax事件 6.7.2 用Dojo实现Ajax 6.7.3 用GWT实现Ajax 6.7.4 服务端的Ajax 6.8 内容协商 7. 验证 7.1 声明约束 7.2 验证约束 7.3 客户端验证 7.4 验证和国际化 8. 服务层 8.1 声明式事务 8.2 服务的作用域 8.3 依赖注入和服务 8.4 使用Java的服务 9. 测试 9.1 单元测试 9.2 集成测试 9.3 功能测试 10. 国际化 10.1 理解信息绑定 10.2 改变Locales 10.3 读取信息 11. 安全 11.1 预防攻击 11.2 字符串的编码和解码 11.3 身份验证 11.4 关于安全的插件 11.4.1 Acegi 11.4.2 JSecurity 12 插件 12.1 创建和安装插件 12.2 理解插件的结构 12.3 提供基础的工件 12.4 评估规约 12.5 参与构建事件 12.6 参与运行时配置 12.7 运行时添加动态方法 12.8 参与自动重载 12.9 理解插件加载的顺序 13. Web服务 13.1 REST 13.2 SOAP 13.3 RSS和Atom 14. Grails和Spring 14.1 Grails的支柱 14.2 配置其他Bean 14.3 通过Beans DSL运行Spring 14.4 配置属性占位 14.5 配置属性重载 15. Grails和Hibernate 15.1 通过Hibernate注释进行映射 15.2 深入了解 16. 脚手架

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值