国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Resultful API的攔截(過濾器——Filter)

ckllj / 3009人閱讀

摘要:四過濾器攔截器切面起作用的順序先是過濾器起作用然后攔截器起作用然后切面起作用最后進入方法中五當控制層即層的方法拋異常時,過濾器攔截器切面拋異常的順序先是切面如果使用自定義異常再進入這個處理異常類然后攔截器然后過濾器如果都沒處理,最后到

一、Resultful API的攔截三種方式

  • 過濾器(Filter)
  • 攔截器(Interceptor)
  • 切片(Aspect)

二、過濾器(Filter)的演示示例(springboot項目)

1、自定義一個名稱為TimeFilter的過濾器,代碼如下:

package com.xz.springsecuritydemo.filter;import org.springframework.stereotype.Component;import javax.servlet.*;import java.io.IOException;import java.util.Date;@Component//添加該注解使過濾器啟作用,如果不使用@Component注解需要寫配置類,例lz寫的WebConfig進行注冊public class TimeFilter implements Filter {    //在控制器方法(即controller類中的方法)調用之前調用    @Override    public void init(FilterConfig filterConfig) throws ServletException {        System.out.println("Time Filter init");    }    //在控制器方法(即controller類中的方法)調用之后調用    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        System.out.println("Time Filter start");        long startTime = new Date().getTime();        chain.doFilter(request,response);        long endTime = new Date().getTime();        System.out.println("Filter耗時:"+(endTime-startTime));        System.out.println("Time Filter end");    }    //在控制器方法(即controller類中的方法)調用之后調用    @Override    public void destroy() {        System.out.println("Time Filter destroy");    }}

2、自定義一個WebFilterConfig配置類,步驟1中如果不使用@Component注解,需要使用基于java的配置方式實現,代碼如下:

package com.xz.springsecuritydemo.filter;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.ArrayList;@Configurationpublic class WebFilterConfig {    @Bean    public FilterRegistrationBean timeFilter(){        FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();        filterRegistrationBean.setFilter(new TimeFilter());        ArrayList<String> list = new ArrayList<>();        list.add("/*");//過濾所有路徑        filterRegistrationBean.setUrlPatterns(list);        return filterRegistrationBean;    }}

3、自定義一個控制類,代碼如下

@RestController//表示此Controller提供RestAPIpublic class SysQueryController {   /**     * @RequestMapping  映射http請求url到java方法     * @RequestParam    映射請求參數到java方法的參數     */    @RequestMapping(value = "/user1",method = RequestMethod.GET)    public void query1(@RequestParam String username){        System.out.println("query1====="+username);    } }

4、測試步驟

  • 啟動項目時會先輸出自定義過濾器類TimeFilter的init方式的信息,如下圖:

  • 再用postman測試工具發送請求,如下圖:

  • 最后查看控制態輸出信息,如下圖:

    //輸出內容Time Filter startquery1=====xzFilter耗時:128Time Filter end

5、輸出第4步的內容表示自定義的Filter過濾器成功。

三、Filter過濾器特點

  • 由上面的示例可知:Filter過濾器可以獲取到原始的http請求和響應的信息,但是獲取不到真正處理請求的方法信息。

四、Filter過濾器、Interceptor攔截器 、Aspect切面起作用的順序

  • 先是Filter過濾器起作用
  • 然后Interceptor攔截器起作用
  • 然后Aspect切面起作用
  • 最后進入Controller方法中

五、當控制層(即Controller層)的方法拋異常時,Filter過濾器、Interceptor攔截器 、Aspect切面 拋異常的順序

  • 先是Aspect切面
  • 如果使用@ControllerAdvice自定義異常,再進入這個處理異常類
  • 然后Interceptor攔截器
  • 然后Filter過濾器
  • 如果都沒處理,最后到tomcat

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/119348.html

相關文章

  • Resultful API攔截(切片Aspect)

    摘要:目錄一的攔截三種方式二切片的演示示例項目三切片特點四過濾器攔截器切面起作用的順序五當控制層即層的方法拋異常時,過濾器攔截器切面拋異常的順序一的攔截三種方式過濾器攔截器切片二切片的演示示例項目自定義一個名稱為的切片,代碼 ...

    huaixiaoz 評論0 收藏0
  • springboot(五)——springboot中攔截器和濾器小結

    摘要:而攔截器代理模式的實現基于反射,代理又分靜態代理和動態代理,動態代理是攔截器的簡單實現。如果是處理前后,既可以使用攔截器也可以使用過濾器,如果都使用了,注意前后順序。 前言 關于過濾器Filter和攔截器Interceptor,大家都不會陌生,從一開始的servelet,到springmvc,再到現在的springboot,都有接觸到,記得剛接觸的時候,會容易弄混淆,想寫這篇文章做個小...

    Magicer 評論0 收藏0
  • spring中濾器攔截區別

    摘要:攔截器原理攔截器是基于反射機制動態代理實現使用實現接口返回值表示是否需要將當前的請求攔截下來。 攔截器 原理:攔截器是基于java反射機制(動態代理)實現 使用: 實現HandlerInterceptor接口 - preHandle:返回值:boolean表示是否需要將當前的請求攔截下來。方法中Object對象標識的是被攔截的請求的目標對象 - postHandle:在Disp...

    gotham 評論0 收藏0
  • 調用鏈系列(3):如何從零開始捕獲body和header

    摘要:拓展閱讀調用鏈系列解讀中的貪吃蛇調用鏈系列輕調用鏈實現在中,協議的請求響應模型是由規范容器如實現的。在這篇文章中,我會向大家具體介紹如何從零開始捕獲和。配置以后,我們就可以從的方法中獲取到和后文簡稱和了。三獲取和獲取的方式大體相同。 拓展閱讀:調用鏈系列(1):解讀UAVStack中的貪吃蛇 調用鏈系列(2):輕調用鏈實現 在Java中,HTTP協議的請求/響應模型是由Servlet規...

    hqman 評論0 收藏0
  • 【Geek議題】合理VueSPA架構討論(下)

    摘要:接上篇議題合理的架構討論上傳送門。處理思路如下使用上面定義的方法獲取如果能獲取到則說明有有效的,則時候即可跳轉到目標頁如果獲取到空字符串,則說明無效或不存在,跳轉至登錄頁面。 接上篇《【Geek議題】合理的VueSPA架構討論(上)》傳送門。 自動化維護登錄狀態 登錄狀態標識符跟token類似,都是需要自動維護有效期,但也有些許不同,獲取過程只在用戶登錄或注冊的時候,不需要自動獲取。 ...

    mindwind 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<