Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor
阿新 • • 發佈:2018-08-21
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) throwsException; 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