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
經過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 來講明
當執行某一個Action的時候 須要在執行先後處理相關業務,下面看下這段代碼
public virtual void OnActionExecuted(ActionExecutedContext context); public virtual void OnActionExecuting(ActionExecutingContext context);
在Action執行先後會執行如上方法,經過對這寫方法的重寫來處理業務,這裏根據Java中其實也差很少,.NetCore經過 建立ActionContext對象 在對象實例 Invoke 以前後分別執行當前 OnActionExecuting 、OnActionExecuted 方法
固然.NetCore中的 Filter 還有其餘的,只是這裏的ActionFilter 針對的 Action操做而已