尽管Grails支持良好的细粒度控制器(controller),但只对少数控制器(controller)的应用时非常有用,当管理大型应用时就会变得很困难。另一方面,过滤器能横跨一群控制器(controller),一个URI空间或一个具体的操作(action)。过滤器对插件更容易并能保证彻底的分离主要控制器(controller)逻辑,有利于所有像安全,日志等等这样的横切关注点
.
为了创建一个过滤器,可在
grails-app/conf
下创建一个以规约 Filters
结尾的类。在这个类中,定义一个名为
filters
的代码块,它包含了过滤器的定义 :
class ExampleFilters {
def filters = {
// your filters here
}
}
每个在filters
块中定义的过滤器(Filters)拥有一个名字和一个作用域。名字是方法的名字,作用域使用命名参数来定义。例如,假如你需要定义一个应用于所有控制器(controller)和操作(action)的过滤器(Filters)可以使用通配符
:
sampleFilter(controller:'*', action:'*') {
// interceptor definitions
}
过滤器的作用域可以是下面之一:
- 具有通配符的一个控制器(controller)和/或操作(action)名字对
- 具有Ant路径匹配语法的一个URI
过滤器的一些示例包括:
- 所有控制器(controller)和操作(action)
all(controller:'*', action:'*') {}
justBook(controller:'book', action:'*') {}
someURIs(uri:'/book/**') {}
另外,这个次序决定了你所定义的过滤器的执行次序.
在过滤器的主体内,你可以定义下列过滤器(Filters)的拦截器类型之一:
-
before
- 操作(Action)之前执行.
返回false来指示后续的控制器(controller)和操作(action)不会被执行
-
after
- 操作(Action)之后执行. 获取第一参数作为视图模型
-
afterView
- 视图渲染之后执行
例如,为实现普通身份验证,可以定义如下过滤器(Filters):
class SecurityFilters {
def filters = {
loginCheck(controller:'*', action:'*') {
before = {
if(!session.user && !actionName.equals('login')) {
redirect(action:'login')
return false
}
} }
}
}
这里的loginCheck
过滤器(Filters)使用一个before
拦截器来执行代码块,检查是否一个用户在session内,假如不是,重定向到login操作(action)。注意,如何返回false确保操作(action)本身不被执行
.
过滤器支持所有在 控制器(controllers) 和
标签库
中可用的属性,附加application context :
不过,过滤器只支持用于控制器(controller)和标签库方法的子集 。这些包括:
分享到:
相关推荐
NULL 博文链接:https://nainse.iteye.com/blog/408721
Grails开发Web应用的入门建立兴趣的最佳教程。
grails快速开发web.pdf
Grails企业web应用开发与部署.pdf 很好的资源
自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。
自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。...我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。
关于grails企业web开发环境和部署的一些经验,和大家分享。
Grails Web 应用框架:grails-core
Grails Grails Grails Grails Grails
Grails 1.1 Web Application Development.pdf
grails开发关于grails入门指南的例子进行分析
本教程介绍 Grails,这是一个搭建在动态语言 Groovy 之上的开源 MVC 快速 Web 开发框架。使用 Grails 可以提高 Web 开发的效率,降低 Web 开发的复杂度。本文 从 Grails 自动生成代码入手,以示例为中心逐步增加深度...
本文主要介绍如何运用Grails框架进行快速Web应用开发。文章首先简单介绍了Grails框架开发环境;然后,在分析GrailsMVC模式实现和自适应考试系统原理的基础上,采用用例分析技术和领域模型驱动模式,基于Grails框架设计...
Grails入门好资料
Grails建立在这些概念之上,它极大地降低了在Java平台上建立Web应用的复杂性。与那些框架不同的是,Grails是构建在现有的像Spring、Hibernate这样的Java技术之上。 Grails是个一栈式开发框架,它尝试通过核心技术...
易于使用的基于Hibernate的对象-关系映射(ORM)层称为Groovy Server Pages (GSP)的表现层技术基于Spring MVC的控制器层构建于Gant 上的命令行脚本运行环境内置Jetty服务器,不用重新启动服务器就可以进行重新加载利用...
基于Spring MVC的控制器层 构建于Gant 上的命令行脚本运行环境 内置Jetty服务器,不用重新启动服务器就可以进行重新加载 利用内置的Spring 容器实现依赖注入 基于Spring的MessageSource核心概念,提供了对国际化...
自己买的书,然后用扫描机扫描的,整个文件太大了,不能一次性上传上来,所以拆成3个part。 我自己学grails很想看这本书,结果网上没有,就自己去买了,然后共享给需要的人。 如果有什么问题请联系我下架。
Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南