`
Nainse
  • 浏览: 23999 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Grails 的过滤器(Grails Filters)

阅读更多

翻 by:Nainse 2009年6月1日21:52:34

从1.0版本Grails开始把filters作为一个约定来支持,它们可以被人为编码或作为插件(plug-ins),独立于控制器(controller)来应用。
这些过滤器是按照它们被定义的顺序来执行的。

----------注意--------------
plug-ins的顺序是在load的时候确定的(In the case of plug-ins in the order in which the plug-ins load(
please clarify previous sentence)请一定弄清楚这句话的意思)。如果你想让一个filter在一个已知的以plug-in形式存在的filter执行后执
行的话,你必须用“dependsOn”属性来使该filter依赖于(depends on)另外的那个已知filter。 详见:http://www.grails.org/Plugin+Dependencies
-----------------------


开始定义Filters吧
首先在grails-app/conf目录下创建一个以Filters为后缀的groovy类文件,然后在该类里声明一个名字叫做filters的闭包(代码块),然后就可以
在该闭包内定义改filter的业务了。

class SomeNameFilters{ 
def filters = { 
//your filter here 
} 
} 

 
每一个filter都有一个名字和有效域(has a name and a scope)。名字是指filter的方法名,有效域则是按照相应的命名规则命名的参数。

myFilter(controller:'*', action:'*'){ 
// 
} 

 

有效域可以是:
1.controller和/或action与一些可选的通配符(optional wildcards)
2.URI

一些例子:

all(controller:'*', action:'*'){} 

justBook(controller:'book', action:'*'){} 

someURIs(uri:'/book/*'){} 

allURIs(uri:'/**'){} 

 
Filters 拦截器(Interceptors)

在已定义好的fiters闭包内,你可以定义一些一下的过滤拦截器:

1.before:在action之前执行,可以返回false来终止所有后续的filters和action的继续执行。
2.after:在action之后执行,被view model(视图模型)作为第一个参数调用(Called with the view model as the first arguments)
3.afterView:在render到视图(view)后执行(Excuted after view rendering)

例子:

class SecurityFilters { 
def filters = { 
loginCheck(controller:'*', action:'*'){ 
before = { 
if(params.cotroller == null){ 
redirect(action:'login') 
//当你用的是Tomcat服务器,并且controller是null的时候,你必须返回true,否则会抛出异常 
return true 
}else if(!session.user && !actionName.equals('login')){ 
redirect(action:'login') 
return false 
} 
} 
} 
} 
} 

 
Filters的动态方法/属性
Filters支持大多数的在controller和tag libraries中包含的通用属性。
requset:HttpServletRequest对象
response:HttpServletResponse对象
session:HttpSession对象
servletContext:ServletContext对象
applicationContext:ApplicationContext对象
params:请求参数对象(the request parameters object)
actinoName:正在转发的action的名字
controllerName:正在转发的controller的名字
另外,Filters还支持下面的方法:

redirect 
render 

 

 

0
1
分享到:
评论

相关推荐

    Grails入门指南中文第二版.pdf

    8. **Grails过滤器(Filters)**:过滤器在应用程序中的应用,如何在特定的HTTP请求或响应之前/之后执行代码。 9. **Grails视图(Views)**:使用GSP(Groovy Server Pages)进行页面渲染,理解标签库(Tag Libs)...

    grails-2.3.6.zip

    7. **Grails Filters**: 过滤器(Filters)是Grails中用于在请求处理前后执行代码的机制,常用于登录验证、日志记录等场景。开发者可以轻松地定义全局或特定控制器的过滤器。 8. ** Geb和Spock 测试**: Geb是一个...

    Grails-2.4.4-用户手册

    5. **Filters**:全局过滤器,可以在请求处理的各个阶段执行通用任务,如登录检查、日志记录等。 6. **Plugins**:插件系统允许扩展Grails功能,提供开箱即用的解决方案,如Spring Security、Asset Pipeline等。 **...

    Grails从零开始开发项目二

    在Grails项目中,Groovy源代码通常包含控制器(Controllers)、服务(Services)、领域类(Domain Classes)、过滤器(Filters)等核心组件。控制器负责处理HTTP请求,服务提供业务逻辑,领域类定义数据模型,过滤器...

    Grails结合uploadify上传文件的简单代码

    grails.filters = ['uploadFilter'] // 使用上传过滤器 grails.controllers.upload.maxSize = '10MB' // 设置最大上传文件大小 ``` 以上就是Grails结合uploadify实现文件上传的基本步骤。通过这种方式,你可以创建...

    The definitive Guide To Grails学习笔记

    此外,Grails的拦截器(Interceptors)和过滤器(Filters)也会在此部分被讲解,它们提供了扩展和控制应用行为的机制。 第四和第五篇笔记将深入到视图(Views)和模板引擎,如GSP(Grails Server Pages)的使用,...

    Grails1.0_final_doc_and_API

    5. **Filters**:过滤器允许在请求生命周期的不同阶段执行代码,实现全局行为,如登录检查或日志记录。 通过深入学习"Grails 1.0_final_doc_and_API",开发者不仅可以掌握Grails的基本用法,还能了解到框架背后的...

    g-shop:建立基于 Grails 的电子商店的古老尝试

    5. **Grails Filters**:过滤器可以在请求生命周期的不同阶段执行,用于全局的日志记录、权限检查等。 **项目学习点** 1. **Grails 布局和模板引擎**:了解如何使用 GSP(Grails Server Pages)创建动态页面,并...

    SpringOne-Using Spring Security 2

    - **过滤器(Filters)**:Spring Security使用一系列过滤器来处理安全性相关的请求; - **认证管理器(Authentication Manager)**:负责验证用户的凭证; - **授权(Authorization)**:根据用户的角色或权限控制...

Global site tag (gtag.js) - Google Analytics