<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kxbin
    成功留給有準備的人
    posts - 10,  comments - 35,  trackbacks - 0

    Filter是一個很有用的東西,使用filter可以修改request, response, session, application中的內容。

    1. javax.servlet.Filter有兩個重要的方法 
    public void init(FilterConfig config)
    public void doFilter(ServletRequest request, ServletResponse response, 

      FilterChain chain)
    其中init方法用來作一些初始化的方法,而doFilter方法用來執行真正的過濾操作。

    2. Filter的部署方法 
    在web.xml中要聲明filter元素,并分配需要其處理的url,如下:
    <filter>
        <filter-name>Filter1</filter-name>
        <filter-class>com.baidu.Filter1</filter-class>
    </filter>
    <filter>
        <filter-name>Filter2</filter-name>
        <filter-class>com.baidu.Filter2</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>Filter1</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>Filter2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    3. doFilter函數的執行順序 
    當某個url請求匹配了多個Filter時,應用服務器將多個Filter組織成FilterChain,這個鏈的執行順序是由其<filter-mapping>元素在web.xml文件中的順序決定的。
    doFilter函數可以過濾請求或者響應,當其過濾完請求后將調用FilterChain的doFilter函數讓FilterChain中的下一個Filter來過濾請求。最先過濾請求的Filter將最后過濾相應,下面是個簡單的例子。
    public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException
    {
           system.out.println(“filter request here ----”);
            // todo:
           chain.doFilter(request,response);
           system.out.println(“filter response here ----”);
            // todo:

    }

    4.init函數的執行順序 
        對于不同的應用服務器,Filter的init函數的執行時間是不同的,例如:tomcat會在tomcat啟動的時候執行init函數,而weblogic等一些其他的應用服務器則會在該Filter匹配的url被首次請求的時候加載。
    (下面的部分是我通過實驗猜想的,不一定正確。) 
        對于tomcat而言,tomcat啟動時會解析web.xml文件,然后按照<filter>元素的順序將各個Filter元素加載到一個 HashMap中。解析完成后,會從HashMap中一個個的拿出Filter元素,串行的執行其init函數(這里的執行有先后關系,是在一個線程中執 行的)。所以在tomcat中定義的多個Filter其init函數的執行順序就是其在HashMap中的散列順序,具體來說與其在web.xml文件中 的定義位置及其名字有關。
        對于HashMap來說,如果其元素固定不變,則其順序也是固定不變的,但當元素個數發生變化時,便不能保證其順序(例如:當有兩個元素時,A在B的前面,當再加入20個元素的時候A就不一定在B的前面了),所以init函數的執行順序是無法保證的。
    posted on 2011-12-28 08:58 kxbin 閱讀(5146) 評論(0)  編輯  收藏 所屬分類: J2EE
    你恨一個人是因為你愛他;你喜歡一個人,是因為他身上有你沒有的;你討厭一個人是因為他身上有你有的東西;你經常在別人面前批評某人,其實潛意識中是想接近他。

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(5)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    J2EE

    java技術網站

    Linux

    平時常去的網站

    數據庫

    電影網站

    網站設計

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费黄色网址入口| 四虎永久免费观看| 亚洲午夜精品久久久久久浪潮| 亚洲av无码专区国产乱码在线观看 | 久久精品国产亚洲av麻豆小说| 亚洲精品无AMM毛片| 成人性生交大片免费看好| 亚洲熟妇av午夜无码不卡| 一级美国片免费看| 国产妇乱子伦视频免费| 四虎精品亚洲一区二区三区| 99ri精品国产亚洲| 免费观看四虎精品成人| 免费成人激情视频| 国产亚洲精品不卡在线| 精品亚洲AV无码一区二区| 久久精品无码专区免费| 成人超污免费网站在线看| 久久久亚洲欧洲日产国码农村| 亚洲国产精品久久久久秋霞小 | 9久热这里只有精品免费| 最近中文字幕免费mv视频8| 亚洲区小说区图片区QVOD| 亚洲精品亚洲人成在线| 毛片在线播放免费观看| 又粗又大又长又爽免费视频| 亚洲精品成人网站在线播放| 国产精品成人免费观看| 四虎成人免费大片在线| 久久精品国产亚洲av麻豆小说| 亚洲免费无码在线| 日本视频免费在线| 亚洲av乱码一区二区三区香蕉 | 亚洲AV日韩AV永久无码色欲| 最近2022中文字幕免费视频| 亚洲午夜精品一级在线播放放| 亚洲成a∨人片在无码2023| 国产精品成人免费福利| 亚洲AV无码一区二区三区DV| jizz免费在线观看| 又爽又黄无遮挡高清免费视频|