翻 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
分享到:
相关推荐
8. **Grails过滤器(Filters)**:过滤器在应用程序中的应用,如何在特定的HTTP请求或响应之前/之后执行代码。 9. **Grails视图(Views)**:使用GSP(Groovy Server Pages)进行页面渲染,理解标签库(Tag Libs)...
7. **Grails Filters**: 过滤器(Filters)是Grails中用于在请求处理前后执行代码的机制,常用于登录验证、日志记录等场景。开发者可以轻松地定义全局或特定控制器的过滤器。 8. ** Geb和Spock 测试**: Geb是一个...
5. **Filters**:全局过滤器,可以在请求处理的各个阶段执行通用任务,如登录检查、日志记录等。 6. **Plugins**:插件系统允许扩展Grails功能,提供开箱即用的解决方案,如Spring Security、Asset Pipeline等。 **...
在Grails项目中,Groovy源代码通常包含控制器(Controllers)、服务(Services)、领域类(Domain Classes)、过滤器(Filters)等核心组件。控制器负责处理HTTP请求,服务提供业务逻辑,领域类定义数据模型,过滤器...
grails.filters = ['uploadFilter'] // 使用上传过滤器 grails.controllers.upload.maxSize = '10MB' // 设置最大上传文件大小 ``` 以上就是Grails结合uploadify实现文件上传的基本步骤。通过这种方式,你可以创建...
此外,Grails的拦截器(Interceptors)和过滤器(Filters)也会在此部分被讲解,它们提供了扩展和控制应用行为的机制。 第四和第五篇笔记将深入到视图(Views)和模板引擎,如GSP(Grails Server Pages)的使用,...
5. **Filters**:过滤器允许在请求生命周期的不同阶段执行代码,实现全局行为,如登录检查或日志记录。 通过深入学习"Grails 1.0_final_doc_and_API",开发者不仅可以掌握Grails的基本用法,还能了解到框架背后的...
5. **Grails Filters**:过滤器可以在请求生命周期的不同阶段执行,用于全局的日志记录、权限检查等。 **项目学习点** 1. **Grails 布局和模板引擎**:了解如何使用 GSP(Grails Server Pages)创建动态页面,并...
- **过滤器(Filters)**:Spring Security使用一系列过滤器来处理安全性相关的请求; - **认证管理器(Authentication Manager)**:负责验证用户的凭证; - **授权(Authorization)**:根据用户的角色或权限控制...