1. 程式人生 > >Filter&Listener筆記

Filter&Listener筆記

Filter過濾器

概念:當訪問伺服器得資源時,過濾器可以將請求攔截下來,完成一些特殊得功能 作用:一般用於完成通用得操作,如:登陸驗證,統一編碼處理,敏感字元過濾 快速入門 步驟 定義一個類,實現介面Filter 複寫方法 配置攔截路徑 1.web.xml 2.註解 程式碼:

 @WebFilter("/*")//訪問所有資源之前,都會執行該過濾器
        public class FilterDemo1 implements Filter {
            @Override
            public void init(FilterConfig filterConfig) throws ServletException {

            }

            @Override
            public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
                System.out.println("filterDemo1被執行了....");


                //放行
                filterChain.doFilter(servletRequest,servletResponse);

            }

            @Override
            public void destroy() {

            }
        }

過濾器細節 web.xml配置

        <filter>
            <filter-name>demo1</filter-name>
            <filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>demo1</filter-name>
            <!-- 攔截路徑 -->
            <url-pattern>/*</url-pattern>
        </filter-mapping>

過濾器執行流程 執行過濾器 執行放行後得資源 回來執行過濾器放行程式碼下邊得程式碼 過濾器宣告週期方法 init:在伺服器啟動後,會建立Filter物件,然後呼叫init方法,只執行一次,用於載入資源 doFilter:每一次請求被攔截資源時,會執行,可執行多次 destory:在伺服器關閉後,Filter物件被銷燬,如果伺服器是正常關閉,則會執行destory方法,只執行一次,用於銷燬資源 過濾器配置 攔截路徑配置

1.具體資源路徑:/index.jsp
2.攔截目錄:/user/*
3.字尾名攔截: *.jsp
4.攔截所有資源:/*

攔截方式配置:資源被訪問的方式 註解配置: 設定dispatcherTypes屬性 設定dispatcherTypes屬性 1. REQUEST:預設值。瀏覽器直接請求資源 2. FORWARD:轉發訪問資源 3. INCLUDE:包含訪問資源 4. ERROR:錯誤跳轉資源 5. ASYNC:非同步訪問資源 web.xml配置 設定<dispatcher></dispatcher>

標籤即可

過濾器鏈 執行順序:如果有兩個過濾器:過濾器1和過濾器2 1. 過濾器1 2. 過濾器2 3. 資源執行 4. 過濾器2 5. 過濾器1 過濾器先後順序問題: 1. 註解配置:按照類名的字串比較規則比較,值小的先執行 如: AFilter 和 BFilter,AFilter就先執行了。 2. web.xml配置: 誰定義在上邊,誰先執行

增強物件的功能 設計模式:一些通用的解決固定問題的方式 1.裝飾模式 2.代理模式 概念: 1.真實物件:被代理的物件 2.代理物件: 3.代理模式:代理物件代理真實物件,到達增強真實物件功能的目的 實現方式: 1.靜態代理:有一個類檔案描述代理模式 2.動態代理:在記憶體中形成代理類 實現步驟: 1.代理物件和真實物件實現相同介面 2.代理物件=Proxy.newProxyInstance(); 3.使用真實物件呼叫方法 4.增強方式 增強方式: 1.增強引數列表 2.增強返回值型別 3.增強方法體執行邏輯

Listener監聽器

web三大組建之一 時間監聽機制 事件:一件事情 事件源:事件發生的地方 監聽器:一個物件 註冊監聽:將事件,事件源,監聽器繫結在一起,當事件源上發生某個事件後,執行監聽器程式碼

* ServletContextListener:監聽ServletContext物件的建立和銷燬
    * 方法:
        * void contextDestroyed(ServletContextEvent sce) :ServletContext物件被銷燬之前會呼叫該方法
        * void contextInitialized(ServletContextEvent sce) :ServletContext物件建立後會呼叫該方法
    * 步驟:
        1. 定義一個類,實現ServletContextListener介面
        2. 複寫方法
        3. 配置
            1. web.xml
                    <listener>
                     <listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>
                    </listener>

                    * 指定初始化引數<context-param>
            2. 註解:
                * @WebListener