过滤器的应用

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

一、认识一下ActionFilterAttribute

                                        

1、在IActionFilter接口中:

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

                    

2、在IResultFilter

           

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

           

二、使用方法

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

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


    

    标签这样引用在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

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



评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王师傅66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值