01---4中过滤器的总结与使用

1.过滤器的使用(创建一个MyFilter文件夹存储所有的过滤器)
    1.1    Authorization
        1.1.1创建一个MyAuthorization继承自AuthorizatioAttribute

        1.1.2重写OnAuthorization方法,传入一个filterContext

        1.1.3    客户端重定向的时候不要使用filterContext.HttpContet.Response.Ridirect(string url),而是使用filterContext.Result,因为第一种不会让服务器段停止执行.
            filterContext.Result=new RedirectResult(UrlHelper.GenerateUrl());

        1.1.4    给要添加过滤的行为或者控制器中添加定义的过滤器:格式是[MyAuthorization],则有添加特性的过滤器获取方法就会先去执行过滤器中的内容,再执行行为.
                namespace t1_Filter.Controllers
                {
                    //当前控制器下的所有行为均进行定义的身份验证过滤器
                    [MyAuthorization]
                    public class HomeController : Controller
                    {
                        //
                        // GET: /Home/
                        //添加一个身份验证的过滤器
                        //[MyAuthorization]
                        public ActionResult Index()
                        {
                            return View();
                        }

                        public ActionResult Show()
                        {
                            return View();
                        }
                    }
                }
            1.1.5    当需要给所有控制器所有行为添加身份验证过滤器的时候.在global文件中注册

                     public static void RegisterGlobalFilters(GlobalFilterCollection filters)
                            {
                                // 原来的身份验证过滤器
                                //filters.Add(new HandleErrorAttribute());

                                //在全局中注册过滤器,则所有控制器的所有行为,都会执行这个过滤器
                                filters.Add(new MyAuthorization());

                            }

            1.1.6    第二种,使用在控制器中重写onAuthorization的方法来实现

                        protected override void OnAuthorization(AuthorizationContext filterContext)
                        {
                           filterContext.HttpContext.Response.Write("这是在控制器中重写的身份验证过滤器");
                        }

        1.2    异常处理过滤器
            使用的方法如身份验证过滤器,不过一般注册到Global文件的过滤器中
                public override void OnException(ExceptionContext filterContext)
                    {
                        //以下代码不可以被删除,否则捕获不到异常
                        base.OnException(filterContext);
                         //记录日志   

                        //页面跳转
                        filterContext.Result=new RedirectResult("/Error/404.html");
                    }

                注意:要更改配置文件:在system.web节点中添加一个customErrors节点
                    <system.web>
                        <customErrors mode="On"></customErrors>
                    <system.web>

        1.3    行为过滤器:继承自ActionFilterAttribute
            1.3.1    OnActionExcuting(行为前)

            1.3.2    OnActionExcuted(行为后)
        1.4    结果过滤器:继承自ActionFilterAttribute
            1.4.1    OnResultExcuting(结果执行前)

            1.4.2    OnResultExcuted(结果执行后)
        Demo:
             public class MyAction:ActionFilterAttribute
                {
                    public override void OnActionExecuting(ActionExecutingContext filterContext)
                    {
                        filterContext.HttpContext.Response.Write("自定义行为执行前方法<br/>");
                    }

                    public override void OnActionExecuted(ActionExecutedContext filterContext)
                    {
                        filterContext.HttpContext.Response.Write("自定义行为执行后方法<br/>");
                    }

                    public override void OnResultExecuting(ResultExecutingContext filterContext)
                    {
                        filterContext.HttpContext.Response.Write("结果执行前的方法<br/>");
                    }

                    public override void OnResultExecuted(ResultExecutedContext filterContext)
                    {
                        filterContext.HttpContext.Response.Write("结果执行后的方法<br/>");
                    }
                }            

总结:
=>过滤器的的实现由两种方式:
    1.自定义类,然后给要执行的控制器或者方法添加特性

    2.重写Controller类的方法

=>过滤器的种类4种:
    1.身份验证过滤器
    2.异常处理过滤器
    3.行为过滤器
    4.结果过滤器
时间: 2024-10-06 06:08:12

01---4中过滤器的总结与使用的相关文章

java中过滤器和监听器详解

先说一下java中过滤器的作用: 过滤器是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url.主要为了减轻服务器负载.减少压力 拦截器的作用: 拦截器是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法.比如可以用拦截器做一些权限管理 或者log之类的事情. 过滤器和拦截器他们的作用是不同的.   Java中过

统计01矩阵中全1子矩阵的个数

统计01矩阵中全1子矩阵的个数 1.51Nod 1291 题意:600*600的01矩阵,统计宽i高j的全1矩阵的个数. 题解:枚举矩阵的下边界,对于每个下边界,统计所有宽极大的矩形的答案(高度可以用差分).\(n^2\) 统计完之后,我们已知所有高度的宽极大的答案,列一下式子发现两次前缀和就是最后答案. 代码: #include<bits/stdc++.h> using namespace std; #define fi first #define se second #define mp

.Net Core MVC中过滤器简介

原文:.Net Core MVC中过滤器简介 在.Net Framework MVC 中有四种过滤器,授权过滤器(Authorize).Action 过滤器.结果过滤器(Result).异常过滤器(Exception)四种过滤器.在.Net Core MVC中,有五种过滤器,授权过滤器.Action过滤器.异常过滤器.结果过滤器.资源过滤器,新增了资源过滤器. .Net Core MVC和.Net Framework MVC在基本使用上差别不大,主要的还是框架的差别.其中路由是个很重要的东西,参

Struts2中过滤器和拦截器的区别

拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用 4.拦截器可以访问action上下文.值栈里的对象,而过滤器不能 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器 :是在面向切面编程的就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比

web中过滤器的使用与乱码问题解决

一.过滤器Filter 1.filter的简介 filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目   标资源访问前后进行逻辑处理 2.快速入门 步骤: 1)编写一个过滤器的类实现Filter接口 2)实现接口中尚未实现的方法(着重实现doFilter方法) 3)在web.xml中进行配置(主要是配置要对哪些资源进行过滤) (1)创建Filter实现Filter 拦截之后要放行. package filter; import java.io.IOException

java中过滤器、监听器、拦截器的区别

1.过滤器:所谓过滤器顾名思义是用来过滤的,在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts的action前统一设置字符集,或者去除掉一些非法字符(聊天室经常用到的,一些骂人的话).filter 流程是线性的, url传来之后,检查之后,可保持原来的流程

Spring中过滤器+监听器的使用

过滤器: 过滤器放在web资源之前,可以在请求抵达它所应用的web资源(可以是一个Servlet.一个Jsp页面,甚至是一个HTML页面)之前截获进入的请求,并且在它返回到客户之前截获输出请求.Filter:用来拦截请求,处于客户端与被请求资源之间,目的是重用代码.Filter链,在web.xml中哪个先配置,哪个就先调用.在filter中也可以配置一些初始化参数. Filter 有如下几个种类: 用户授权的Filter: Filter 负责检查用户请求,根据请求过滤用户非法请求. 日志Filt

.NET跨平台之OWEN中 过滤器的使用

.NET中依赖IIS,通俗的说就是依赖IIS的程序集,导致我们的.NET项目就算是MONO到TOMCAT上,也无法使用,所以OWEN横空出世,OWEN定义了一套接口,接口定义了做.NET项目要实现的一些接口,OWEN本身通过这些接口获取到我们项目中的Request/Response,拿着这些去和Server(IIS\APCHE\TOMCAT...)通信. 回到正题,我们知道在MVC中,可以有 public override void OnActionExecuted(ActionExecuted

C# web api 中过滤器的使用

一.开篇 Fiter在Web API中经常会用到,主要用于记录日志,安全验证,全局错误处理等:Web API提供两种过滤器的基本类型:actionfilterattribute,exceptionfilterattribute:两个类都是抽象类,actionfilter主要实现执行请求方法体之前(覆盖基类方法OnActionExecuting),和之后的事件处理(覆盖基类方法OnActionExecuted):exceptionfilter主要实现触发异常方法(覆盖基类方法OnException