中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

HandlerInterceptor攔截(jie)實現對(dui)PathVariable變(bian)量的讀取

Http請求攔截作用

  • 攔截后可以修改請求體
  • 攔截后可以作一些其它統一的操作

問題提出

對于很多時間需要攔截(jie)很多Http請求,然后去獲取一(yi)些參(can)數(shu),這些參(can)數(shu)可能是(shi)(shi)querystring串,也可能是(shi)(shi)路由上(shang)的字符(fu),對于前者HandlerInterceptor的request對象(xiang)有自己(ji)的方法,而對于后者,需要我們特殊處理一(yi)下,也就晃今(jin)天要說的內容。

添加攔截器

這個在百度上查了很多文章,都說不能實現,而在bing上查了一下馬上找到答案!還是要感謝微軟!
地址:

 /**
   * 進行處理器攔截,action之前執行
   *
   * @param request
   * @param response
   * @param handler
   * @return
   * @throws Exception
   */
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
      throws Exception {
    switch (request.getMethod()) {
      case "POST":
      case "PUT":
      case "DELETE":
        Map pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
        String value = (String) pathVariables.get("code");
        YearMonth accountPeriod = YearMonth.parse(request.getParameter("accountPeriod"));
        if (value == "1") {
          return false;//value為1請求結束
        }
        break;
      default:
        break;
    }
    return true;
  }

}

添加注冊組件

注冊組件里可以控制你要(yao)攔截(jie)的地址,這(zhe)是很重(zhong)要(yao)的,我們沒必要(yao)攔截(jie)所(suo)有請求(qiu)!

@Configuration
public class WebAppConfigurer extends WebMvcConfigurerAdapter {

  @Override
  public void addInterceptors(InterceptorRegistry interceptorRegistry) {

    //多個攔截器組成一個攔截器鏈
    //addPathPatterns 用于添加攔截規則
    //excludePathPatterns用于排除攔截規則
    interceptorRegistry.addInterceptor(new ValidateDataInterceptor()).addPathPatterns("/**");
    //設置(模糊)匹配的url
    //    List<String> urlPatterns = Lists.newArrayList();
    //    urlPatterns.add("/api/v1/goods/*");
    //    urlPatterns.add("/api/v1/userinfo/*");
    super.addInterceptors(interceptorRegistry);
  }
}

感謝各位閱讀!

posted @ 2018-07-02 18:54  張占嶺  閱讀(4723)  評論(0)    收藏  舉報