91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spring boot過濾器FilterRegistrationBean實現方式

發布時間:2020-09-12 22:06:30 來源:腳本之家 閱讀:206 作者:稚語希聽 欄目:編程語言

有2種方式可以實現過濾器

1:通過FilterRegistrationBean實例注冊

2:通過@WebFilter注解生效

這里選擇第一種,因為第二種不能設置過濾器之間的優先級

為了演示優先級,這里創建2個測試過濾器類:Test1Filter、Test2Filter

通過實現javax.servlet.Filter接口,覆蓋其doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)方法,決定攔截或放行

public class Test1Filter implements Filter {

  @Override
  public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
      throws IOException, ServletException {
    // TODO Auto-generated method stub
    HttpServletRequest request=(HttpServletRequest)arg0;
    System.out.println("自定義過濾器filter1觸發,攔截url:"+request.getRequestURI());
    arg2.doFilter(arg0,arg1);
  }

}
public class Test2Filter implements Filter {
  @Override
  public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
      throws IOException, ServletException {
    // TODO Auto-generated method stub
    HttpServletRequest request=(HttpServletRequest)arg0;
    System.out.println("自定義過濾器filter2觸發,攔截url:"+request.getRequestURI());
    arg2.doFilter(arg0,arg1);
  }

}

通過在springboot的configuration中配置不同的FilterRegistrationBean實例,來注冊自定義過濾器

這里創建一個configuration類

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.example.demo.filter.Test1Filter;
import com.example.demo.filter.Test2Filter;

@Configuration
public class DemoConfiguration {

  @Bean
  public FilterRegistrationBean<Test1Filter> RegistTest1(){
    //通過FilterRegistrationBean實例設置優先級可以生效
    //通過@WebFilter無效
    FilterRegistrationBean<Test1Filter> bean = new FilterRegistrationBean<Test1Filter>();
    bean.setFilter(new Test1Filter());//注冊自定義過濾器
    bean.setName("flilter1");//過濾器名稱
    bean.addUrlPatterns("/*");//過濾所有路徑
    bean.setOrder(1);//優先級,最頂級
    return bean;
  }
  @Bean
  public FilterRegistrationBean<Test2Filter> RegistTest2(){
    //通過FilterRegistrationBean實例設置優先級可以生效
    //通過@WebFilter無效
    FilterRegistrationBean<Test2Filter> bean = new FilterRegistrationBean<Test2Filter>();
    bean.setFilter(new Test2Filter());//注冊自定義過濾器
    bean.setName("flilter2");//過濾器名稱
    bean.addUrlPatterns("/test/*");//過濾所有路徑
    bean.setOrder(6);//優先級,越低越優先
    return bean;
  }
}

其中

1第一個bean攔截所有路徑,而第二個只攔截/test/*路徑

2第一個bean優先級設置了1,而第二個設置了6,越低越優先,所以過濾器1應該在過濾器2前面攔截

運行springboot,訪問/test/*請求如下圖,再訪問/v請求如下圖只攔截了過濾器1,而過濾器2路徑不匹配

spring boot過濾器FilterRegistrationBean實現方式

如果把.addUrlPatterns();中攔截路徑改成一樣/test/*,則所有請求,都會觸發2個過濾器,而且過濾器1永遠在最先攔截

spring boot過濾器FilterRegistrationBean實現方式

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新河县| 开化县| 衢州市| 曲麻莱县| 崇明县| 馆陶县| 贡山| 商水县| 昌图县| 哈密市| 南昌县| 中卫市| 上虞市| 珠海市| 筠连县| 开原市| 南丰县| 涪陵区| 禄丰县| 华亭县| 吴忠市| 长武县| 玛曲县| 榆林市| 仁化县| 汝阳县| 繁昌县| 土默特右旗| 黔西县| 资源县| 云和县| 体育| 长垣县| 台南县| 蓬莱市| 汾阳市| 古浪县| 长海县| 桂东县| 大足县| 汉中市|