摘要:有如下幾個(gè)種類用戶授權(quán)檢查用戶請(qǐng)求,根據(jù)請(qǐng)求過(guò)濾用戶非法請(qǐng)求日志記錄某些特殊的用戶請(qǐng)求解碼對(duì)非標(biāo)準(zhǔn)編碼的請(qǐng)求解碼。和的區(qū)別是基于函數(shù)回調(diào)方法的,而則是基于反射的思想。依賴于容器,而不依賴于容器。對(duì)幾乎所有的請(qǐng)求起作用,而只能對(duì)請(qǐng)求起作用。
Interceptor
主要作用:攔截用戶請(qǐng)求,進(jìn)行處理,比如判斷用戶登錄情況、權(quán)限驗(yàn)證,只要針對(duì)Controller請(qǐng)求進(jìn)行處理,是通過(guò)HandlerInterceptor。
Interceptor分兩種情況,一種是對(duì)會(huì)話的攔截,實(shí)現(xiàn)spring的HandlerInterceptor接口并注冊(cè)到mvc的攔截隊(duì)列中,其中preHandle()方法在調(diào)用Handler之前進(jìn)行攔截(上圖步驟3),postHandle()方法在視圖渲染之前調(diào)用(上圖步驟5),afterCompletion()方法在返回相應(yīng)之前執(zhí)行;另一種是對(duì)方法的攔截,需要使用@Aspect注解,在每次調(diào)用指定方法的前、后進(jìn)行攔截。
Filter主要作用:過(guò)濾字符編碼、做一些業(yè)務(wù)邏輯判斷,主要用于對(duì)用戶請(qǐng)求進(jìn)行預(yù)處理,同時(shí)也可進(jìn)行邏輯判斷。
Filter在請(qǐng)求進(jìn)入servlet容器執(zhí)行service()方法之前就會(huì)經(jīng)過(guò)filter過(guò)濾(上圖步驟1),不像Intreceptor一樣依賴于springmvc框架,只需要依賴于servlet。Filter啟動(dòng)是隨WEB應(yīng)用的啟動(dòng)而啟動(dòng),只需要初始化一次,以后都可以進(jìn)行攔截。
Filter有如下幾個(gè)種類:
用戶授權(quán)Filter:檢查用戶請(qǐng)求,根據(jù)請(qǐng)求過(guò)濾用戶非法請(qǐng)求;
日志Filter:記錄某些特殊的用戶請(qǐng)求;
解碼Filter:對(duì)非標(biāo)準(zhǔn)編碼的請(qǐng)求解碼。
Filter和Interceptor的區(qū)別Filter是基于函數(shù)回調(diào)(doFilter()方法)的,而Interceptor則是基于Java反射的(AOP思想)。
Filter依賴于Servlet容器,而Interceptor不依賴于Servlet容器。
Filter對(duì)幾乎所有的請(qǐng)求起作用,而Interceptor只能對(duì)action請(qǐng)求起作用。
Interceptor可以訪問(wèn)Action的上下文,值棧里的對(duì)象,而Filter不能。
在action的生命周期里,Interceptor可以被多次調(diào)用,而Filter只能在容器初始化時(shí)調(diào)用一次。
Filter在過(guò)濾是只能對(duì)request和response進(jìn)行操作,而interceptor可以對(duì)request、response、handler、modelAndView、exception進(jìn)行操作。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/74048.html
摘要:的入口是,而是這里要指出,和是不同的。以前認(rèn)為是的一種特殊,這就導(dǎo)致了二者的機(jī)制不同,這里就牽涉到和的區(qū)別了。開發(fā)效率和性能高于。的實(shí)現(xiàn)機(jī)制有以自己的機(jī)制,用的是獨(dú)立的方式。 1、Struts2是類級(jí)別的攔截, 一個(gè)類對(duì)應(yīng)一個(gè)request上下文,SpringMVC是方法級(jí)別的攔截,一個(gè)方法對(duì)應(yīng)一個(gè)request上下文,而方法同時(shí)又跟一個(gè)url對(duì)應(yīng),所以說(shuō)從架構(gòu)本身上SpringMVC...
摘要:攔截器原理攔截器是基于反射機(jī)制動(dòng)態(tài)代理實(shí)現(xiàn)使用實(shí)現(xiàn)接口返回值表示是否需要將當(dāng)前的請(qǐng)求攔截下來(lái)。 攔截器 原理:攔截器是基于java反射機(jī)制(動(dòng)態(tài)代理)實(shí)現(xiàn) 使用: 實(shí)現(xiàn)HandlerInterceptor接口 - preHandle:返回值:boolean表示是否需要將當(dāng)前的請(qǐng)求攔截下來(lái)。方法中Object對(duì)象標(biāo)識(shí)的是被攔截的請(qǐng)求的目標(biāo)對(duì)象 - postHandle:在Disp...
摘要:攔截服務(wù)一使用第三方過(guò)濾器直接加入項(xiàng)目攔截服務(wù)二使用自定義攔截器攔截服務(wù)三使用切片完結(jié) Spring攔截服務(wù)【一】(SpringBoot使用第三方過(guò)濾器Filter直接加入項(xiàng)目) Spring攔截服務(wù)【二】(SpringBoot使用自定義攔截器Interceptor) Spring攔截服務(wù)【三】(SpringBoot使用切片Aspect)【完結(jié)】
摘要:而攔截器代理模式的實(shí)現(xiàn)基于反射,代理又分靜態(tài)代理和動(dòng)態(tài)代理,動(dòng)態(tài)代理是攔截器的簡(jiǎn)單實(shí)現(xiàn)。如果是處理前后,既可以使用攔截器也可以使用過(guò)濾器,如果都使用了,注意前后順序。 前言 關(guān)于過(guò)濾器Filter和攔截器Interceptor,大家都不會(huì)陌生,從一開始的servelet,到springmvc,再到現(xiàn)在的springboot,都有接觸到,記得剛接觸的時(shí)候,會(huì)容易弄混淆,想寫這篇文章做個(gè)小...
摘要:圖片抓取上本項(xiàng)目主要講述項(xiàng)目的搭建和啟動(dòng)過(guò)程,為以后繼續(xù)圖片抓取的業(yè)務(wù)展示做基礎(chǔ)。用于處理請(qǐng)求和響應(yīng)的攔截處理。這樣相比容器直接發(fā)到處理,大大減少了代碼重復(fù)工作而且方便統(tǒng)一管理。上下文關(guān)系從上圖可以看出主要在和兩部分做工作。 【圖片抓取】003-JAVA WEB(上) 本項(xiàng)目主要講述java web項(xiàng)目的搭建和啟動(dòng)過(guò)程,為以后繼續(xù)圖片抓取的業(yè)務(wù)展示做基礎(chǔ)。項(xiàng)目中采用tomcat+spr...
閱讀 3933·2021-09-22 10:02
閱讀 3365·2019-08-30 15:52
閱讀 3061·2019-08-30 12:51
閱讀 755·2019-08-30 11:08
閱讀 2065·2019-08-29 15:18
閱讀 3106·2019-08-29 12:13
閱讀 3592·2019-08-29 11:29
閱讀 1872·2019-08-29 11:13