1. 程式人生 > >Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor

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

contex tor 代碼 web resp conf 裏的 figure ext

這篇主要說下攔截器的處理,這裏就說下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操作而已

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