不懂Filter和Interceptor的區(qū)別是什么?有哪些??其實(shí)想解決這個(gè)問題也不難,下面讓小編帶著大家一起學(xué)習(xí)怎么去解決,希望大家閱讀完這篇文章后大所收獲。
結(jié)合實(shí)踐,更直觀的來感受一下兩者到底有什么不同?
準(zhǔn)備環(huán)境
我們?cè)陧?xiàng)目中同時(shí)配置攔截器
和過濾器
。
1、過濾器 (Filter)
過濾器的配置比較簡(jiǎn)單,直接實(shí)現(xiàn)Filter
接口即可,也可以通過@WebFilter
注解實(shí)現(xiàn)對(duì)特定URL
攔截,看到Filter
接口中定義了三個(gè)方法。
init()
:該方法在容器啟動(dòng)初始化過濾器時(shí)被調(diào)用,它在Filter
的整個(gè)生命周期只會(huì)被調(diào)用一次。注意:這個(gè)方法必須執(zhí)行成功,否則過濾器會(huì)不起作用。doFilter()
:容器中的每一次請(qǐng)求都會(huì)調(diào)用該方法,FilterChain
用來調(diào)用下一個(gè)過濾器Filter
。destroy()
: 當(dāng)容器銷毀 過濾器實(shí)例時(shí)調(diào)用該方法,一般在方法中銷毀或關(guān)閉資源,在過濾器Filter
的整個(gè)生命周期也只會(huì)被調(diào)用一次@Component public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("Filter 前置"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("Filter 處理中"); filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { System.out.println("Filter 后置"); } }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。