grails的mvc相关功能

grails的Domain Class/*.gsp(或者*.jsp)/Controller是一个典型的MVC框架。

可能gsp让一些人感到陌生,在我看来可以把gsp看做一个模板,类似于velocity或者freemarker之类的东西。所有的标签其实是一个特定渲染动作。毫无疑问,目前他并没有多少可选的输出,他运用的是spring的MVC结构,当然可能不如webwork来得强大。

模板的include功能还是比较强的,可以使用类似于“<g:render template="/modulename/abc" />”之类的语句来进行include,当然,在/view/modulename下面必须有"_abc.gsp"这样的文件存在。 而且可以给这个render提供数据 <g:render template="/modulename/abc" collection="${books}" />或者bean="${book}" 等,说到底,他还是一个修饰数据的模板。可以使用这个功能来包含我们的top,bottom,left等。

在controller中,比较重要的功能是Action Interceptors(Action拦截器),这也是rails的重要功能。譬如这样一段action代码:
def beforeInterceptor = [action:this.&auth,except:'login']
// defined as a regular method so its private
def auth() {
if(!session.user) {
redirect(action:'login')
return false
}
}
def login = {
// display login page
}

注意这段语句:def beforeInterceptor = [action:this.&auth,except:'login']

就是一个典型的login拦截器,这样在调用其他action之前,会调用auth这个action闭包,如果返回false,那么action将不会被执行。从而重定向到login这个action。同样我们的拦截器可以指定except,这个属性实际上是指定拦截的范围,这里是排除拦截login这个action,否则将会使用户无法登陆。

其他的功能也都很有用,不过比较简单,详细的可以看http://docs.codehaus.org/display/GRAILS/Controllers,有request数据绑定,fileupload,action chain,domain object dynamic method等。grails也提供中文首页,地址是http://docs.codehaus.org/display/GRAILS/Chinese-Home,不过很多东西都还没有中文文档,只能我们自己去看英文文档。

关于MVC中的Model(Domain class)可以参考GORM,这个东西地层是Hibernate的,非常的简单实用,被Hiberante搞昏了的同志可以看看这个,GORM中只提供1:1,1:m这两种数据关联,可以单向也可以双向,非常的简单,个人认为n:m这种数据关联应该避免使用,这种数据关联结构将会使应用变得低效和复杂,如果需要多对多的关联,那么可以自己写java的类和hbm文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值