Grails 过滤器
来源:互联网 发布:linux shell 全局变量 编辑:程序博客网 时间:2024/05/17 02:10
尽管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:'*') {}
- 只适合
BookController
justBook(controller:'book', action:'*') {}
- 适合一个URI空间
someURIs(uri:'/book/**') {}
- 适合所有的URIs
allURIs(uri:'/**') {}
另外,这个次序决定了你所定义的过滤器的执行次序.
过滤器(Filters)类型
在过滤器的主体内,你可以定义下列过滤器(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 :
- request - HttpServletRequest对象
- response - HttpServletResponse对象
- session - HttpSession对象
- servletContext - ServletContext对象
- flash - flash对象
- params - 请求参数对象
- actionName - 被分配的action名
- controllerName - 被分配的controller名
- grailsApplication - 当前运行的Grails应用程序
- applicationContext - ApplicationContext对象
不过,过滤器只支持用于控制器(controller)和标签库方法的子集 。这些包括:
- redirect - 重定向到其他的控制器(controller)和操作(action)
- render - 渲染自定义响应
- Grails 过滤器
- Grails WEB层 过滤器
- Grails WEB层 过滤器
- grails过滤器和数据查询的几个重要方法
- grails
- grails
- grails
- Grails
- 精通 Grails: RESTful Grails
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- java判断当前网页是否为移动终端登录
- UVa 10918 - Tri Tiling
- Where can I buy birkenstock
- Android存储之操作sdcard
- _launcher.xml中的结构
- Grails 过滤器
- db2 char varchar nvarch 区别
- Android WiFi--系统架构
- 关于Android L的五个有趣事实
- 从身份盗窃保护您的在线声誉
- java 读取模板EXCEL写入数值
- 今天的威胁和对USB存储设备解决方案
- 网络请求封装
- js动态加载css或js