我们为什么不用 MVC 拦截器

简介:

一:MVC 中的拦截器

众所周知,MVC 存在如下几个主要的拦截器:IActionFilter、IExceptionFilter、IResultFilter、IAuthorizationFilter,

但是我们并不用这些拦截器,因为:

我们的业务逻辑面向多个平台,即有 Winform,有 Web Mvc 控制器,还有 Ios 等手机终端,在这些前台调用我们的服务的时候,我们不想为每个平台或者框架,使用它们各自的拦截器。

即便我们的平台只使用 Mvc ,我们也不使用这些拦截器,因为

1:基于 Attribute 的拦截器不能接受运行时参数。在MVC 的拦截器中可以得到 Http 上下文,如果你的参数藏在 Http Header 或者 Content 中,你也许会说,我们可以很容易的在拦截器内部获取到这些参数。但是,谁说参数一定来自于 Http 中。

2:基于 Attribute 的拦截器只能在方法开始和结束的时候注入代码。这有时候是个优点,

所有,我们需要一个通用的拦截器。

 

二:通用拦截器

public JsonResult TestJson() 

    return FrontProtector.Do1<JsonResult>(()=> 
    { 
        JsonResult re = new JsonResult(); 
        return re; 
    }); 
}

public ActionResult TestAction() 

    return null; 
}

public int TestInt(){ 
    return FrontProtector.Do2<int>(()=> 
    { 
        return 0; 
    }); 
}

class FrontProtector 

    public static T Do1<T>(Func<T> func) where T: class 
    { 
        T t =  default(T); 
        try 
        { 
            // 1: 记录日志; 
            // 2: 登录判断; 
            // 3: 如果有必要的话, 权限欺骗; 
            t = func(); 
            return t; 
        } 
        catch 
        { 
            // 3: 包装异常; 
            if( t is JsonResult) 
            { 
                return new JsonResult() as T; 
            } 
            
            return new {} as T; 
        } 
    } 
    
    public static T Do2<T>(Func<T> func) where T: struct 
    { 
        T t = default(T); 
        try 
        { 
            t = func(); 
            return t; 
        } 
        catch 
        { 
            return default(T); 
        } 
    } 
}


本文转自最课程陆敏技博客园博客,原文链接:http://www.cnblogs.com/luminji/p/3559230.html,如需转载请自行联系原作者
相关文章
|
12月前
|
XML 前端开发 安全
Spring Mvc 拦截器详解
Spring Mvc 拦截器详解
100 0
|
11月前
|
前端开发 Java Spring
Spring MVC拦截器+注解方式实现防止表单重复提交
Spring MVC拦截器+注解方式实现防止表单重复提交
|
设计模式 监控 前端开发
【Spring MVC学习笔记 七】深入理解SpringMVC拦截器原理
【Spring MVC学习笔记 七】深入理解SpringMVC拦截器原理
276 0
|
XML 前端开发 Java
Spring MVC拦截器和过滤器的区别
你好看官,里面请!今天笔者讲的是Spring MVC拦截器和过滤器的区别。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
170 2
Spring MVC拦截器和过滤器的区别
|
XML JSON 前端开发
Spring MVC 系列之拦截器 Interceptor 最全总结
理解拦截器 Interceptor 拦截器 Interceptor 在 Spring MVC 中的地位等同于 Servlet 规范中的过滤器 Filter,拦截的是处理器的执行,由于是全局行为,因此常用于做一些通用的功能,如请求日志打印、权限控制等。
1481 0
Spring MVC 系列之拦截器 Interceptor 最全总结
|
设计模式 监控 前端开发
Spring MVC学习(五)-------处理器拦截器详解
Spring MVC学习(五)-------处理器拦截器详解
Spring MVC学习(五)-------处理器拦截器详解
|
前端开发 Java 数据安全/隐私保护
Spring MVC 实现拦截器
SpringMVC的拦截器Interceptor类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。比如:可以实现:权限控制、日志、异常记录、记录方法执行时间.....
164 0
Spring MVC  实现拦截器
|
前端开发 Java Spring
Spring MVC实现拦截器功能
Spring MVC实现拦截器功能
171 0
Spring MVC实现拦截器功能
|
前端开发 数据格式 JSON
mvc 注解相应配置
SpringMvc相应注解配置 @RequestParam 参数注解 @RequestHeader 请求头注解 @CookieValue Cookie注解 注解的好处是什么: 只要你写上相应的注解他就会给你得到相应的参数、减少了一些繁杂的操作 import org.
737 0
|
前端开发 Java Spring
Spring MVC拦截器实现
到这段时, 想起来了以前学底层一些的servlet & jsp技术时, 过滤器和拦截器也有相关实现, 但比起来,spring的实现,可用性高很多。
1373 0