ASP.NET MVC 拦截器IResultFilter

在ASP.NET MVC中,有一个Result拦截器,实现ResultFilter需要继承一个类(System.Web.Mvc.FilterAttribute)和实现一个类(System.Web.Mvc.IResultFilter),

System.Web.Mvc.IResultFilter接口有两个方法:

1、OnResultExecuting方法在操作结果执行之前调用。

2、OnResultExecuted方法在在操作结果执行后调用。

下面是我测试的代码:

1、先新建一个ResultFillterAttribute类:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5
 6 namespace AttributeDemo.Common
 7 {
 8     /// <summary>
 9     /// Result拦截器
10     /// </summary>
11     public class ResultFillterAttribute : System.Web.Mvc.FilterAttribute, System.Web.Mvc.IResultFilter
12     {
13
14         #region 执行完action后调用
15         /// <summary>
16         /// 执行完action后调用
17         /// </summary>
18         /// <param name="filterContext"></param>
19         void System.Web.Mvc.IResultFilter.OnResultExecuted(System.Web.Mvc.ResultExecutedContext filterContext)
20         {
21
22         }
23         #endregion
24
25         #region 在操作结果执行之前调用
26         /// <summary>
27         /// 在操作结果执行之前调用。
28         /// </summary>
29         /// <param name="filterContext"></param>
30         void System.Web.Mvc.IResultFilter.OnResultExecuting(System.Web.Mvc.ResultExecutingContext filterContext)
31         {
32
33         }
34         #endregion
35
36
37     }
38 }

2、新建一个ResultFillterTestController控制器类,在控制器或者action写属性AttributeDemo.Common.ResultFillter,即可实现对控制器或action的结果进行拦截:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6
 7 namespace AttributeDemo.Controllers
 8 {
 9     /// <summary>
10     /// 测试Result拦截器
11     /// </summary>
12     //[AttributeDemo.Common.ResultFillter]
13     public class ResultFillterTestController : Controller
14     {
15         //
16         // GET: /ResultFillterTest/
17
18         [AttributeDemo.Common.ResultFillter]
19         public ActionResult TestResultFillter()
20         {
21
22             return View();
23         }
24
25
26         public ActionResult Index()
27         {
28             return View();
29         }
30
31     }
32 }
时间: 2024-08-05 02:35:18

ASP.NET MVC 拦截器IResultFilter的相关文章

Spring Boot 2.X(九):Spring MVC - 拦截器(Interceptor)

拦截器 1.简介 Spring MVC 中的拦截器(Interceptor)类似于 Servlet 开发中的过滤器 Filter,它主要用于拦截用户请求并作相应的处理,它也是 AOP 编程思想的体现,底层通过动态代理模式完成. 2.定义实现类 拦截器有两种实现方式: 1.实现 HandlerInterceptor 接口 2.继承 HandlerInterceptorAdapter 抽象类(看源码最底层也是通过 HandlerInterceptor 接口 实现) 3.HandlerIntercep

对于Spring MVC 拦截器的一些了解

Spring MVC 拦截器的执行顺序 应用场景 假设请求 localhost:8080/ 则要求直接重定向到 localhost:8080/login ; 定义拦截器顺序 permission login 执行顺序 pre 先执行先定义的,而 post 和 after 先执行后定义的. 原文地址:https://www.cnblogs.com/bjio/p/12242920.html

Spring MVC拦截器

一.定义自己的拦截器 需要我们定义的类继承HandlerInterceptor 变成自定义的拦截器 package cn.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servl

spring MVC拦截器01

spring MVC拦截 作用:身份校验,权限检查,防止非法訪问. 场景:一个bbs系统,用户没有登录就无法发帖或者删除评论; 一个博客系统,没有登录就无法发表博文,无法添加分类,无法删除博文. spring MVC 拦截实现分为2步 (1)编写拦截器类,必须继承org.springframework.web.servlet.HandlerInterceptor 核心方法: public boolean preHandle(HttpServletRequest request, HttpServ

Spring MVC拦截器+注解方式实现防止表单重复提交

原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过. 注,如果是集群的方式,则需要将token放入到缓存中即可. 注解Token代码:java源码  Java代码 复制代码 收藏代码 1[email protected](ElementType.METHOD) 2[email protected] (RetentionPolicy.RUNTIME) 3.public @interface T

spring mvc 拦截器

拦截器是针对Mapping的.可以在Mapping下配置对应的拦截的.由于常用mvc:annotation-driven配置Mapping和Adapter,所以这里用mvc:interceptors配置拦截器. 1.单个mapping的拦截器 a.定义拦截器. 实现拦截器接口. b.配置拦截器 拦截queryUser.action,特定某个(queryUser.action) c.controller d.测试,控制台显示 2.多个拦截器 按配置顺序执行. a.增加拦截器 b.配置 1在前,2在

自定义 spring mvc 拦截器(近期项目需求实现)

需求背景:特定文件夹下任何文件不经过登录,全部拦截强制跳转登录,并客户端禁止下载服务器定制文件夹文件 经过1天多时间的各种尝试,自定义式的强大拦截器实现了,废话不说了,直接贴代码啦. demo: 1>   根目录下 index.html 内容: <a href="html/index.html">index</a><br/> <a href="html/login3.html">login3.html---<

spring mvc拦截器和&lt;mvc:annotation-driven /&gt;的详解

MVC的拦截器 经本人在Spring mvc中对方案1和方案2的测试表明,并没有拦截静态资源,所以可以放心使用方案1和方案2,方案3可以放弃,并且可以放心使用<mvc:annotation-driven />注解. 方案一,(近似)总拦截器,拦截所有url <mvc:interceptors> <bean class="com.app.mvc.MyInteceptor" /> </mvc:interceptors> 为什么叫“近似”,前面

Spring3 MVC 拦截器拦截不到的问题

拦截器: com.zk.interceptors.MyInterceptor 实现了 HandlerInterceptor接口,可以拦截@RequestMapping注解的类和方法 第一种方式 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.zk.interceptors.MyInterceptor"><