Chinese Quick Start

快速开始

以下内容简单介绍如何使用grails开始一个简单的新项目,同时还有一个视频来演示这些步骤。

建立Grails工程

  安装 完Grails后,你可以使用内置的target来创建新项目:

grails create-app


这个target 会提示你输入项目名称并创建如下目录结构:

%PROJECT_HOME%
    + grails-app
       + conf                 ---> 存放一些配置信息,比如数据源
       + controllers          ---> 存放控制器
       + domain               ---> 存放域对象(domain class)
       + i18n                 ---> 存放一些i18n相关的内容
       + services             ---> 存放服务组件
       + taglib               ---> 存放标签库
       + util                 ---> 存放一些工具类(比如:编/解码工具,等等)
       + views                ---> 存放视图组件
          + layouts              ---> 存放布局组件
   + lib
   + spring                    ---> spring配置信息(可选)
   + src
       + groovy               ---> 可选,存放groovy源代码
       + java                   ---> 可选,存放java源代码
   + hibernate                 ---> 配置hibernate配置信息
   + war
       + WEB-INF


配置数据源 (可选)

"create-app"这个target 在"<..>/grails-app/conf"目录下创建了几个 Grails 数据源 . 默认情况下配置了几个 :DevelopmentDataSource, TestDataSource, 以及ProductionDataSource,更详细的配置见配置grails环境

(非常适合用来做开发和测试, 但是在生产环境一般不大适用) 因此这个步骤是可选的:

DevelopmentDataSource.groovy
class DevelopmentDataSource {
   boolean pooling = true
   String dbCreate = "create-drop" // one of 'create', 'create-drop','update'
   String url = "jdbc:hsqldb:mem:testDB"
   String driverClassName = "org.hsqldb.jdbcDriver"
   String username = "sa"
   String password = ""
}


配置数据源很简单:只需要把driver等信息修改成你需要的数据库相关信息并把相应的驱动程序放到lib目录下即可。

创建域对象(Domain Class)

首先确保你在项目的根目录下 (比如 "my-project),然后运行"grails create-domain-class" 这个target ,然后输入域对象的名字(比如Book). 域对象是用来做持久化的对象,默认情况下所有的属性都会被保存到数据库里 (到 GORM (Grails Object Relational Mapping)察看更多信息):

Book.groovy
class Book {
  Long id
  Long version

  String title
  String author

  String toString() { "${this.class.name} :  $id" }

	boolean equals(other) {
		if(other?.is(this))return true
		if(!(other instanceof Book)) return false

		if(!id || !other?.id || id!=other?.id) return false

		return true
	}

	int hashCode() {
		int hashCode = 0
		hashCode = 29 * (hashCode + ( !id ? 0 : id ^ (id >>> 32) ) )
	}
}


这时你可能需要创建一些测试数据, 一个比较适合的地方是在Grails的启动类"<..>/grails-app/conf/ApplicationBootStrap.groovy"的 "init" 闭包里添加:

new Book(author:"Stephen King",title:"The Shining").save()
new Book(author:"James Patterson",title:"Along Came a Spider").save()


生成Controller 和 Views

控制器Controllers 是Grails中集中处理web请求的地方,请求的url将被映射到控制器类中的一个closure。

运行 "grails generate-all" 这个target 然后输入你的域对象名称(在这个例子里,输入 "book" ),就会生成一个 控制器和相应的视图组件,通过他们就可以使用 Scaffolding来执行增删改操作.

class BookController {
     def scaffold = Book
}


启动Grails

要启动你的Grails 应用,只需要执行

grails run-app


这将会使用jetty启动你的应用并监听8080端口,如果需要用另外的端口启动(如9090),可以是使用grails -Dserver.port=9090 run-app. 要访问book列表可以打开你的浏览器并访问

http://localhost:8080/my-project/book/list


因为list是BookController 里的默认操作,因此你可以可以只输入:

http://localhost:8080/my-project/book


Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.