Grails 0.1初试

期待了很久,今天看Grails的Rss突然发现已经不是原来的空白了,真是有点兴奋,Groovy早就已经发布了1.0版,可是Grails确迟迟没有消息,体验过Ror的我,很早就想体验一下Grails的感觉了,不过以前一直都是需要通过源代码编译的,我这个人一直都是比较懒的,所以……,呵呵,闲话少说,马上体验一下:
下载:
http://grails.codehaus.org/Download
1、下载后解压缩到一个目录,设置GRAILS_HOME环境变量指向该目录,并加入到PATH环境变量里面,另外需要先在环境变量里面设置JAVA_HOME,另外 GRAILS自带了ANT的安装,原来一直在用eclipse集成的,现在顺便也把ANT_HOME也建立起来的:)
2、运行grial create-app
会提示应用程序的名称,输入一个,如example,会在当前目录下建立一个example的目录,以及下一级的子目录,介绍几个需要用到的目录
grails-app/conf/这里存放的是整个项目的环境变量配置信息,ApplicationDataSource.groovy配置的是数据源的信息,ApplicationBootStrap.groovy配置的是启动和停止项目的时候需要的操作
grails-app/controller目录存放的是控制器,相当于action除此之外还有i18n,views
domain等目录,关于orm的内容全部放在domain目录,GRAILS默认带了hsql的驱动,就拿他来试一下:ApplicationDataSource.groovy的内容如下:
class ApplicationDataSource {
   @Property boolean pooled = true
   @Property String dbCreate = "create-drop" // one of 'create', 'create-drop','update'
    //这里的create-drop会在每次重新启动项目的时候,把原来的数据删除,重建表的结构
   @Property String url = "jdbc:hsqldb:mem:testDB"
   @Property String driverClassName = "org.hsqldb.jdbcDriver"
   @Property String username = "sa"
   @Property String password = ""
}
3、在cmd下,进入该项目的主目录,即example目录,运行
grails create-domain-class,会提示建立domain class的名字,输入Book,就会在grails-app/domain下生成一个Book.groovy,默认的内容是
class Book {
@Property Long id
@Property Long version

}
添加两个其他的属性,最终的结果如下:
class Book {
@Property Long id
@Property Long version

@Property String title
@Property String author
}
这样一个映射类就建立好了,
4、建立控制器,运行grails create-controller,会提示输入控制器的名字,在这里输入BookController,GRAILS和ROR一样都是用约定命名的,在Ror中一个Book的domain class对应着一个名字为books的表,BookController的内容为
class BookController {
    @Property index = {
        redirect(action:list)
     }
    @Property list = {
        [ books : Book.list() ]
     }
}
这样在浏览器里面就可以通过/example/book/以及/example/book/list的方式来调用,index定义的是默认的动作,所以可以省略。
4、建立view,在grails-app/views/目录下建立一个目录book,在该目录下建立一个文件list.gsp,与controller中的方法名字一致,内容如下
java 代码
 
  1. class BookController {   
  2.     @Property index = {   
  3.         redirect(action:list)  
  4.      }   
  5.     @Property list = {   
  6.         [ books : Book.list() ]  
  7.      }  
  8. }  

此时运行项目grails run-app,会启动GRAILS自带的Jetty作为web容器,默认端口是8080,可以通过grails -Dserver.port=9000 run-app改变端口,此时在浏览器里输入http://localhost:8080/example/book是没有数据的,因为数据库里没有数据,
可以通过修改ApplicationBootStrap.groovy文件,在其@Property Closure init {}块中加入
    new Book(author:"world",title:"haha").save()
    new Book(author:"中国",title:"hello").save()

这样再运行就能显示两条记录了:)
5、稍微在修改一下list.gsp,加入一下内容
xml 代码
 
  1. <html>  
  2. <head>  
  3. <title>Book list</title>  
  4. </head>  
  5. <body>  
  6.     <h1>Book list</h1>  
  7.     <table>  
  8.         <% books.each {%>  
  9.          <tr><td>${it.title}</td><td>${it.author}</td></tr>  
  10.         <%}%>  
  11.     </table>  
  12. </body>  
  13. </html>  


然后在BookController下面加入一个create方法,和form中的方法对应,处理提交后的操作
    @Property create = {
        def b =  new Book()
        b.properties = params
        b.save()      
        redirect(action:list)
    }
或者也可以
        new Book(author:params["author"],title:params["title"]).save()
        b.save
对于post,中文支持良好,但是Get方式中,传入的中文会变成乱码,不过没有在文档中找到相应的,看来需要自己解决(嗯,嗯,以后再说,哈:))

最后的总结,第一感觉grails还不错,呵呵,和ror比较类似,又有和java类似的语法,集成了spring,hibernate,由于现在用的只是皮毛,太深层次的话说不出来,可能现在最要紧的是IDE的支持了吧,Ror的RadRails试用过,还是比较方便的,深层次的功能,慢慢再说,(不知道什么时候呢,呵呵:))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值