目錄
Filter過濾器
作用
應(yīng)用場景
攔截器Interceptor
Aspect切片
三者對(duì)比
執(zhí)行順序
攔截層面
過濾器Filter和攔截器Interceptor的區(qū)別
Filter過濾器
- Filter 過濾器它是 JavaWeb 的三大組件之一
- 三大組件分別是:Servlet 程序、Listener 監(jiān)聽器、Filter 過濾器
- Filter 過濾器它是 JavaEE 的規(guī)范
- Filter隨web應(yīng)用的啟動(dòng)而啟動(dòng),只初始化一次,隨web應(yīng)用的停止而銷毀
- 過濾器通過實(shí)現(xiàn)Filter接口,實(shí)現(xiàn)了過濾器的三個(gè)方法,分別是’初始化方法’,‘dofilter方法’和’銷毀方法’
作用
過濾器可以攔截到方法的請(qǐng)求和響應(yīng)(ServletRequest request, ServletResponse response),并對(duì)請(qǐng)求響應(yīng)做出過濾操作。
使用過濾器的目的是用來做一些過濾操作,獲取我們想要獲取的數(shù)據(jù),比如:在過濾器中修改字符編碼;在過濾器中修改HttpServletRequest的一些參數(shù),包括:過濾低俗文字、危險(xiǎn)字符等。
應(yīng)用場景
- 權(quán)限檢查
- 日記操作
- 事務(wù)管理
- ......
攔截器Interceptor
一個(gè)應(yīng)用中可以定義多個(gè)攔截器,spring在項(xiàng)目啟動(dòng)時(shí),會(huì)將這些攔截器注冊(cè)進(jìn)來,并按照默認(rèn)規(guī)則進(jìn)行排序。如果是自定義的攔截器,可手動(dòng)設(shè)置攔截器調(diào)用的先后順序。
各攔截器是鏈?zhǔn)秸{(diào)用,一個(gè)請(qǐng)求可以觸發(fā)多個(gè)攔截器,每個(gè)攔截器的調(diào)用會(huì)按照它加載到spring中的順序依次執(zhí)行。
攔截器中有3個(gè)方法,功能如下:
- preHandle:該方法在調(diào)用Controller方法或獲取靜態(tài)資源前被調(diào)用(靜態(tài)資源包括html、js等)。
- postHandle:該方法在調(diào)用Controller方法或獲取靜態(tài)資源后,但是視圖還沒有被渲染前調(diào)用。
- afterCompletion:該方法在視圖渲染后進(jìn)行調(diào)用,主要用來清除資源。
Aspect切片
AOP操作可以對(duì)操作進(jìn)行橫向的攔截,最大的優(yōu)勢在于他可以獲取執(zhí)行方法的參數(shù),對(duì)方法進(jìn)行統(tǒng)一的處理。常見使用日志,事務(wù),請(qǐng)求參數(shù)安全驗(yàn)證等,可以使用@Aspect標(biāo)記為切面類,使用@Pointcut和@Around、@Before、@After、@AfterReturning、@AfterThrowing來確定攔截位置
三者對(duì)比
執(zhí)行順序
文章來源:http://www.zghlxwxcb.cn/news/detail-444903.html
攔截層面
- 過濾器Filter和攔截器Interceptor屬于請(qǐng)求層面的攔截
- 切面Aspect屬于方法層面的攔截
過濾器Filter和攔截器Interceptor的區(qū)別
區(qū)別 | 過濾器Filter | 攔截器Interceptor |
實(shí)現(xiàn)原理 | 函數(shù)回調(diào) | Java反射機(jī)制 |
適用范圍 | servlet的規(guī)范,只能用于web程序 | spring框架支持, 既可以應(yīng)用在web程序中,也可以應(yīng)用在非web程序中 |
粒度 | Filter只能在servlet的前后起作用 | 攔截器能在方法前后異常前后執(zhí)行,更加靈活,粒度更小,spring框架程序優(yōu)先使用攔截器 |
初始化時(shí)機(jī) | 隨著Tomcat等web容器啟動(dòng)時(shí)而進(jìn)行初始化 | 隨著spring啟動(dòng)而進(jìn)行初始化 |
使的場景文章來源地址http://www.zghlxwxcb.cn/news/detail-444903.html |
實(shí)現(xiàn)通用功能過濾(敏感詞過濾、字符集編碼設(shè)置、響應(yīng)數(shù)據(jù)壓縮等功能) | 實(shí)現(xiàn)項(xiàng)目中的業(yè)務(wù)判斷(登錄判斷、權(quán)限判斷、日志記錄等) |
到了這里,關(guān)于一文詳解過濾器Filter、攔截器Interceptor和切面Aspect的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!