簡(jiǎn)介


          攔截器是基于web框架的調(diào)用,因此可以使用Spring的依賴注入(DI)進(jìn)行一些業(yè)務(wù)操作。在SpringMVC中就是依賴于SpringMVC框架。在實(shí)現(xiàn)上基于Java的反射機(jī)制,屬于面向切面編程(AOP)的一種運(yùn)用。

          主要工作場(chǎng)景

          攔截器可以獲取IOC容器中的各個(gè)bean,而過濾器就不行,所以在攔截器里注入一個(gè)service,可以調(diào)用業(yè)務(wù)邏輯。
          攔截器只能對(duì)controller請(qǐng)求進(jìn)行攔截,對(duì)其他的一些比如直接訪問靜態(tài)資源的請(qǐng)求則沒辦法進(jìn)行攔截處理。

          WebMvcConfigurerAdapter 比較常用的重寫接口
          /** 添加類型轉(zhuǎn)換器和格式化器 */ public void addFormatters(FormatterRegistry registry) /**
          解決跨域問題 **/ public void addCorsMappings(CorsRegistry registry) ; /** 配置消息轉(zhuǎn)換器 */
          public void configureMessageConverters(List<HttpMessageConverter<?>>
          converters) /** 添加攔截器 **/ void addInterceptors(InterceptorRegistry registry);
          /** 這里配置視圖解析器 **/ void configureViewResolvers(ViewResolverRegistry registry);
          /** 配置內(nèi)容裁決的一些選項(xiàng) **/ void
          configureContentNegotiation(ContentNegotiationConfigurer configurer); /**
          視圖跳轉(zhuǎn)控制器 **/ void addViewControllers(ViewControllerRegistry registry); /**
          靜態(tài)資源處理 **/ void addResourceHandlers(ResourceHandlerRegistry registry); /**
          默認(rèn)靜態(tài)資源處理器 **/ void
          configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
          #添加攔截器
          @Override public void addInterceptors(InterceptorRegistry registry) {
          registry.addInterceptor(new ReqInterceptor()).addPathPatterns("/**"); }
          實(shí)現(xiàn)自定義攔截器
          public class ReqInterceptor extends HandlerInterceptorAdapter { @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse
          response, Object handler) throws Exception {
          System.out.println("攔截器--preHandle"); return super.preHandle(request, response,
          handler); } @Override public void postHandle(HttpServletRequest request,
          HttpServletResponse response, Object handler, ModelAndView modelAndView) throws
          Exception { System.out.println("攔截器--postHandle"); super.postHandle(request,
          response, handler, modelAndView); } @Override public void
          afterCompletion(HttpServletRequest request, HttpServletResponse response,
          Object handler, Exception ex) throws Exception {
          System.out.println("攔截器--afterCompletion"); super.afterCompletion(request,
          response, handler, ex); } @Override public void
          afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse
          response, Object handler) throws Exception {
          System.out.println("攔截器--afterConcurrentHandlingStarted");
          super.afterConcurrentHandlingStarted(request, response, handler); } }
          測(cè)試用例
          @GetMapping("/filter/{id}") public void filter(@PathVariable("id") Long id) {
          System.out.println("Controller方法--前"); UserEntity userEntity =
          userService.findUserById(id); System.out.println("Controller方法--后"); }
          運(yùn)行結(jié)果


          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點(diǎn)信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                91福利在线播放 | 少妇午夜剧场 | 小sao货水好多真紧cao视频 | 国产黄a三级三级三级看三 | 男人添女荫道口视频免费 |