溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

過(guò)濾器是什么

發(fā)布時(shí)間:2020-07-30 10:51:37 來(lái)源:億速云 閱讀:147 作者:Leah 欄目:編程語(yǔ)言

過(guò)濾器是什么?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

過(guò)濾器是一個(gè)程序,它先于與之相關(guān)的servlet或JSP頁(yè)面運(yùn)行在服務(wù)器上。過(guò)濾器可附加到一個(gè)或多個(gè)servlet或JSP頁(yè)面上,并且可以檢查進(jìn)入這些資源的請(qǐng)求信息。

在這之后,過(guò)濾器可以作如下的選擇:

①以常規(guī)的方式調(diào)用資源(即,調(diào)用servlet或JSP頁(yè)面)。

②利用修改過(guò)的請(qǐng)求信息調(diào)用資源。

③調(diào)用資源,但在發(fā)送響應(yīng)到客戶機(jī)前對(duì)其進(jìn)行修改。

④阻止該資源調(diào)用,代之以轉(zhuǎn)到其他的資源,返回一個(gè)特定的狀態(tài)代碼或生成替換輸出。

過(guò)濾器的工作原理

在Servlet作為過(guò)濾器使用時(shí),它可以對(duì)客戶的請(qǐng)求進(jìn)行處理。處理完成后,它會(huì)交給下一個(gè)過(guò)濾器處理,這樣,客戶的請(qǐng)求在過(guò)濾鏈里逐個(gè)處理,直到請(qǐng)求發(fā)送到目標(biāo)為止。例如,某網(wǎng)站里有提交“修改的注冊(cè)信息”的網(wǎng)頁(yè),當(dāng)用戶填寫完修改信息并提交后,服務(wù)器在進(jìn)行處理時(shí)需要做兩項(xiàng)工作:判斷客戶端的會(huì)話是否有效;對(duì)提交的數(shù)據(jù)進(jìn)行統(tǒng)一編碼。這兩項(xiàng)工作可以在由兩個(gè)過(guò)濾器組成的過(guò)濾鏈里進(jìn)行處理。當(dāng)過(guò)濾器處理成功后,把提交的數(shù)據(jù)發(fā)送到最終目標(biāo);如果過(guò)濾器處理不成功,將把視圖派發(fā)到指定的錯(cuò)誤頁(yè)面。

過(guò)濾器的生命周期

public void init(FilterConfig filterConfig) throws ServletException;//初始化

和我們編寫的Servlet程序一樣,F(xiàn)ilter的創(chuàng)建和銷毀由WEB服務(wù)器負(fù)責(zé)。 web 應(yīng)用程序啟動(dòng)時(shí),web 服務(wù)器將創(chuàng)建Filter 的實(shí)例對(duì)象,并調(diào)用其init方法,讀取web.xml配置,完成對(duì)象的初始化功能,從而為后續(xù)的用戶請(qǐng)求作好攔截的準(zhǔn)備工作(filter對(duì)象只會(huì)創(chuàng)建一次,init方法也只會(huì)執(zhí)行一次)。開(kāi)發(fā)人員通過(guò)init方法的參數(shù),可獲得代表當(dāng)前filter配置信息的FilterConfig對(duì)象。

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;//攔截請(qǐng)求

這個(gè)方法完成實(shí)際的過(guò)濾操作。當(dāng)客戶請(qǐng)求訪問(wèn)與過(guò)濾器關(guān)聯(lián)的URL的時(shí)候,Servlet過(guò)濾器將先執(zhí)行doFilter方法。FilterChain參數(shù)用于訪問(wèn)后續(xù)過(guò)濾器。

public void destroy();//銷毀

Filter對(duì)象創(chuàng)建后會(huì)駐留在內(nèi)存,當(dāng)web應(yīng)用移除或服務(wù)器停止時(shí)才銷毀。在Web容器卸載 Filter 對(duì)象之前被調(diào)用。該方法在Filter的生命周期中僅執(zhí)行一次。在這個(gè)方法中,可以釋放過(guò)濾器使用的資源。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI