快速开始
以下内容简单介绍如何使用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环境
(非常适合用来做开发和测试, 但是在生产环境一般不大适用) 因此这个步骤是可选的:
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)察看更多信息):
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