grails的mvc相关功能

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

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

模板的include功能还是比较强的,可以使用类似于“”之类的语句来进行include,当然,在/view/modulename下面必须有"_abc.gsp"这样的文件存在。  而且可以给这个render提供数据 或者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文件。

你可能感兴趣的:(MVC,Grails,Rails,数据结构,Webwork)