Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor

 

Java Spring Boot VS .NetCore (一)来一个简单的 Hello Worldhtml

Java Spring Boot VS .NetCore (二)实现一个过滤器Filterweb

Java Spring Boot VS .NetCore (三)Ioc容器处理spring

Java Spring Boot VS .NetCore (四)数据库操做 Spring Data JPA vs EFCore数据库

Java Spring Boot VS .NetCore (五)MyBatis vs EFCoreide

Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtmlpost

Java Spring Boot VS .NetCore (七) 配置文件spa

Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attributecode

Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Securityhtm

Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor对象

Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper

这篇主要说下拦截器的处理,这里就说下org.springframework.web.servlet 下的HandlerInterceptor

Java Interceptor

经过HandlerInterceptor类来看下代码

public interface HandlerInterceptor {
    boolean preHandle(HttpServletRequest var1, HttpServletResponse var2, Object var3) throws Exception;

    void postHandle(HttpServletRequest var1, HttpServletResponse var2, Object var3, ModelAndView var4) throws Exception;

    void afterCompletion(HttpServletRequest var1, HttpServletResponse var2, Object var3, Exception var4) throws Exception;
}

拦截器的处理就在,三个方法的意思一看就明白,也不作过多介绍

那么在代码中咱们怎么来处理这些呢?

这里又要结合前面的章节 Filter 接口在处理了,对什么进行拦截,过滤出须要拦截的进行拦截HandlerInterceptor 接口方法,MyHandlerInterceptor extends HandlerInterceptor  实现过程略。。。

根据前面Filter章节获取将拦截器 以下:

 

public class WebMvcConfig extends WebMvcConfigurerAdapter {
    @Autowired
    private MyHandlerIntercepter myHandlerIntercepter;
@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myHandlerIntercepter).addPathPatterns("/**");
        super.addInterceptors(registry);
    }
    
    @Bean
    public FilterRegistrationBean registFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new OpenEntityManagerInViewFilter());
        registration.addUrlPatterns("/*");
        registration.setOrder(1);
        return registration;
    }

监控下全部的路由地址就好了,那么在.NetCore中怎么来处理的呢?这里就用.NetCore中的 Action 来讲明

.NetCore Interceptor

当执行某一个Action的时候 须要在执行先后处理相关业务,下面看下这段代码

public virtual void OnActionExecuted(ActionExecutedContext context);

public virtual void OnActionExecuting(ActionExecutingContext context);

在Action执行先后会执行如上方法,经过对这写方法的重写来处理业务,这里根据Java中其实也差很少,.NetCore经过 建立ActionContext对象 在对象实例 Invoke 以前后分别执行当前 OnActionExecuting 、OnActionExecuted 方法

固然.NetCore中的 Filter 还有其余的,只是这里的ActionFilter 针对的 Action操做而已

相关文章
相关标签/搜索