成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

servlet過(guò)濾器是什么

這篇文章將為大家詳細(xì)講解有關(guān)servlet過(guò)濾器是什么,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

10年積累的網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有萬(wàn)全免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

servlet過(guò)濾器是服務(wù)器與客戶端請(qǐng)求與響應(yīng)的中間層組件,它主要是用于對(duì)瀏覽器的請(qǐng)求進(jìn)行過(guò)濾處理,并將過(guò)濾后的請(qǐng)求再轉(zhuǎn)給下一個(gè)資源。

servlet過(guò)濾器是什么

過(guò)濾器的基本概念

Servlet過(guò)濾器從字面上的字意理解為經(jīng)過(guò)一層次的過(guò)濾處理才達(dá)到使用的要求,而其實(shí)Servlet過(guò)濾器就是服務(wù)器與客戶端請(qǐng)求與響應(yīng)的中間層組件,在實(shí)際項(xiàng)目開(kāi)發(fā)中Servlet過(guò)濾器主要用于對(duì)瀏覽器的請(qǐng)求進(jìn)行過(guò)濾處理,將過(guò)濾后的請(qǐng)求再轉(zhuǎn)給下一個(gè)資源。

Filter是在Servlet 2.3之后增加的新功能,當(dāng)需要限制用戶訪問(wèn)某些資源或者在處理請(qǐng)求時(shí)提前處理某些資源的時(shí)候,就可以使用過(guò)濾器完成。

過(guò)濾器是以一種組件的形式綁定到WEB應(yīng)用程序當(dāng)中的,與其他的WEB應(yīng)用程序組件不同的是,過(guò)濾器是采用了“鏈”的方式進(jìn)行處理的。

servlet過(guò)濾器是什么

Filter

Servlet過(guò)濾器Fileter是一個(gè)小型的web組件,它們通過(guò)攔截請(qǐng)求和響應(yīng),以便查看、提取或以某種方式操作客戶端和服務(wù)器之間交換的數(shù)據(jù),實(shí)現(xiàn)“過(guò)濾”的功能。Filter通常封裝了一些功能的web組件,過(guò)濾器提供了一種面向?qū)ο蟮哪K化機(jī)制,將任務(wù)封裝到一個(gè)可插入的組件中, Filter組件通過(guò)配置文件來(lái)聲明,并動(dòng)態(tài)的代理。

簡(jiǎn)單來(lái)說(shuō)Servlet的Filter是:

●  聲明式的:通過(guò)在web.xml配置文件中聲明,允許添加、刪除過(guò)濾器,而無(wú)需改動(dòng)任何應(yīng)用程序代碼或jsp頁(yè)面。

●  靈活的:過(guò)濾器可用于客戶端的直接調(diào)用執(zhí)行預(yù)處理和后期的處理工作,通過(guò)過(guò)濾鏈可以實(shí)現(xiàn)一些靈活的功能。

●  可移植的:由于現(xiàn)今各個(gè)web容器都是以Servlet的規(guī)范進(jìn)行設(shè)計(jì)的,因此Servlet過(guò)濾器同樣是跨容器的。

●  可重用的:基于其可移植性和聲明式的配置方式,F(xiàn)ilter是可重用的。

總的來(lái)說(shuō),Servlet的過(guò)濾器是通過(guò)一個(gè)配置文件來(lái)靈活的聲明的模塊化可重用組件。過(guò)濾器動(dòng)態(tài)的截獲傳入的請(qǐng)求和傳出的響應(yīng),在不修改程序代碼的情況下,透明的添加或刪除他們。其獨(dú)立于任何平臺(tái)和web容器。

Filter工作原理

基于Filter體系結(jié)構(gòu)的描述,我們可以看出Filter的工作原理,簡(jiǎn)單的通過(guò)一幅流程圖加以演示:

servlet過(guò)濾器是什么

客戶端瀏覽器在訪問(wèn)web服務(wù)器的某個(gè)具體資源的時(shí)候,經(jīng)過(guò)過(guò)濾器1中code1代碼塊的相關(guān)處理之后,將request請(qǐng)求傳遞給過(guò)濾鏈中的下一個(gè)過(guò)濾器2,(過(guò)濾鏈的順序以配置文件中的順序?yàn)榛鶞?zhǔn))過(guò)濾器2處理完之后,request就傳遞的Servlet完成相應(yīng)的邏輯。返回響應(yīng)的過(guò)程類似,只是過(guò)濾鏈的順序相反,這里就不多說(shuō)了。

Filter的創(chuàng)建過(guò)程

要編寫一個(gè)過(guò)濾器必須實(shí)現(xiàn)Filter接口。實(shí)現(xiàn)其接口規(guī)定的方法。

★  實(shí)現(xiàn)javax.servlet.Filter接口

★ 實(shí)現(xiàn)init方法,讀取過(guò)濾器的初始化參數(shù)

★ 實(shí)現(xiàn)doFilter方法,完成對(duì)請(qǐng)求或響應(yīng)的過(guò)濾

★ 調(diào)用FilterChain接口對(duì)象的doFilter方法,向后續(xù)的過(guò)濾器傳遞請(qǐng)求或響應(yīng)

一個(gè)最基本的過(guò)濾器實(shí)現(xiàn)代碼:

java類:

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class BasicsFilter implements Filter {

    public BasicsFilter() {
        // 容器(服務(wù)器)啟動(dòng)時(shí)執(zhí)行
    }

    /**
     * @see Filter#init(FilterConfig)
     */
    public void init(FilterConfig fConfig) throws ServletException {
        /* 容器(服務(wù)器)時(shí)執(zhí)行 */
        System.out.println("======== 初始化方法 ========");
        // 獲取的是web.xml中配置Filter時(shí)設(shè)置的值,參數(shù)為設(shè)置值得名稱,若參數(shù)不存在,則返回空
        String initParam = fConfig.getInitParameter("param");
        System.out.println("param ========" + initParam);
    }

    /**
     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        /* 在訪問(wèn)的時(shí)候執(zhí)行 */
        System.out.println("======= 開(kāi)始執(zhí)行doFilter ========");
        // 轉(zhuǎn)發(fā)到下一個(gè)組件,進(jìn)行后續(xù)的處理(組件可以是一個(gè)過(guò)濾器,也可以是一個(gè)servlet)
        chain.doFilter(request, response);
        System.out.println("======= 結(jié)束執(zhí)行doFilter ========");
        
    }

    /**
     * @see Filter#destroy()
     */
    public void destroy() {
        // TODO Auto-generated method stub
    }
}

web.xml配置:

<filter>
    <filter-name>basicsFilter</filter-name>
    <filter-class>com.hudongwu.filter.BasicsFilter</filter-class>
    <init-param><!-- 設(shè)置在過(guò)濾器中執(zhí)行初始化方法時(shí),獲取的值 -->
        <param-name>param</param-name>
        <param-value>studyFilter</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>basicsFilter</filter-name>
    <!-- 設(shè)置為訪問(wèn)該網(wǎng)站所有地址都需要通過(guò)該過(guò)濾器 -->
    <url-pattern>/*</url-pattern>
    <!-- 設(shè)置為只有訪問(wèn)該網(wǎng)站的/Helloword地址時(shí)才通過(guò)該過(guò)濾器 -->
    <url-pattern>/Helloword</url-pattern>
</filter-mapping>

關(guān)于servlet過(guò)濾器是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)頁(yè)題目:servlet過(guò)濾器是什么
標(biāo)題路徑:http://jinyejixie.com/article30/jogjpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、外貿(mào)建站、網(wǎng)站維護(hù)網(wǎng)站排名、品牌網(wǎng)站設(shè)計(jì)、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
监利县| 永川市| 大田县| 富源县| 隆德县| 明星| 荔波县| 汝州市| 拜泉县| 辉县市| 华阴市| 体育| 老河口市| 神木县| 怀柔区| 乳源| 元氏县| 科尔| 洪雅县| 大埔县| 峨眉山市| 天祝| 都匀市| 武宁县| 阿勒泰市| 三台县| 偃师市| 酉阳| 咸阳市| 鱼台县| 鱼台县| 竹北市| 都昌县| 垫江县| 长武县| 辽阳市| 诏安县| 三亚市| 定日县| 阿克陶县| 咸丰县|