过滤器的应用

简介: 在上一篇博客中,我们简单的学习了一下面向切面编程,而过滤器就是对这一思想的应用。那如何在项目中使用呢?

 在上一篇博客中,我们简单的学习了一下面向切面编程,而过滤器就是对这一思想的应用。那如何在项目中使用呢?



一、认识一下ActionFilterAttribute



20161221115054858.png


1、在IActionFilter接口中:


在Action执行之前,执行OnActionExecuting(获取触发器的名字),执行之后,执行OnActionExecuted方法;action本身是一个维度。


20161221115229829.png


2、在IResultFilter


20161221115257597.png


在视图渲染之前,执行OnResultExecuting方法,渲染之后,执行OnResultExecuted方法;



20161221115331629.png


二、使用方法

  MyactionFilterAttribute是一个特性类,可以做一个特性标签,直接在controller中被引用

 public class HomeController : Controller
    {
        //
        // GET: /Home/
        [MyActionFilter(Name = "这是IndexAction")]
        public ActionResult Index()
        {
            Response.Write("<br />Action在执行");
            return View("IndexAS");
        }


20161221140706658.png


标签这样引用在controller后,开发人员不用关心什么时候去做日志,什么时候回来开发,在filter类中已经做好了顺序的安排;这就是二维:开发人员和filter,各自负责各自的内容;


    如果想让整个Homecontroller中的所有action都受过滤器的影响,可以把标签打在控制器上面;


   如果想让所有的控制器中的action受过滤器的影响,可以将标签打到global.asax.cs下。


   在特性类下也可再打特性。


三、应用场景:


1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(PageView)等。


2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;


3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);


4、通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。


5、OpenSessionInView:如hibernate,在进入处理器打开Session,在完成后关闭Session。



四、过滤器的好兄弟~拦截器:


推荐阅读:http://www.tuicool.com/articles/2qEzE3F


https://zhidao.baidu.com/question/1821157445942816868.html

  这是我对过滤器的理解,希望能对读者有所帮助。








相关文章
|
6月前
|
Java API 容器
Filter 过滤器实现
JavaWeb 组件 Servlet 提供了 Filter 过滤功能,其功能是对目标资源的请求和响应进行拦截,对拦截到的请求和响应做出特殊的功能处理,比如我们请求中有一些敏感信息过滤就是利用过滤器过滤。
|
Java 容器
28JavaWeb基础 - 过滤器
28JavaWeb基础 - 过滤器
54 0
|
15天前
|
存储 缓存 安全
常用过滤器介绍
常用过滤器介绍
22 0
|
1月前
|
Java 数据挖掘 Android开发
如何添加一个过滤器
如何添加一个过滤器
|
6月前
|
Python
过滤器
过滤器
28 2
|
应用服务中间件
15-Filter 过滤器2
15-Filter 过滤器2
78 0
|
6月前
过滤器&拦截器
过滤器&拦截器
57 0
过滤器&拦截器
|
Java 容器
过滤器和拦截器的区别
Filter 也称为过滤器,基于Servlet实现,拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行,基于AOP思想,对方法进行增强。和servlet 中的过滤器类似,都是对用户请求进行处理。
81 0
|
Java 应用服务中间件 API
过滤器和拦截器
过滤器和拦截器
171 0
|
API 容器
Filter过滤器的简单介绍与使用
Filter过滤器的简单介绍与使用
159 0
Filter过滤器的简单介绍与使用