FilterDispatcher 的作用

org.apache.struts2.dispatcher.FilterDispatcher是Struts2的主要的Filter,負責四個方面的功能:
        (1)執行Actions
        (2)清除ActionContext
        (3)維護靜態內容
        (4)清除request生命週期內的XWork的interceptors
    另注:該過濾器應該過濾所有的請求URL。一般被設置爲/*.
    具體:
        (1)執行Actions
            過濾器通過ActionMapper對象,來判斷是否應該被映射到Action.如果mapper對象指示他應該被映射,過濾鏈將會被終止,
            然後Action被調用。這一點非常重要,如果同時使用SiteMesh filter,則SiteMesh filter應該放到該過濾器前,否則
            Action的輸出將不會被裝飾。
        (2)清除ActionContext
            過濾器爲了確保內存溢出,會自動的清除ActionContext。這可能會存在一些問題,在和其它的框架集成時,例如SiteMesh。
            ActionContextCleanUp提供了怎麼處理這些問題的一些信息。
        (3)維護靜態內容
            過濾器也會維護在Struts2中使用的一些公共的靜態的內容,例如JavaScript文件,CSS文件等。搜索/struts/*範圍內的
            請求,然後將/struts/後面的值映射到一些struts的公共包中,也可以在你的類路徑中搜索。默認情況下會去查找以下
            包:
                org.apache.struts2.static
                template
            這樣你只用請求/struts/xhtml/styles.css,XHTML UI主題默認的樣式表將會被返回。同樣,AJAX UI組件需要的
            JavaScript文件,也可以在org.apache.struts2.static包中被找到。如果你想加入其它被搜索的包,在web.xml中
            設置filter時,通過給"actionPackages"初始參數一個逗號隔開的包列表值來設定。
            需注意的是:他會暴露一些比較敏感的信息例如,properites文件中的數據庫連接信息。
    注:過濾器支持以下初始參數:
        config - 被調入的逗號隔開的XML文件列表。
        actionPackages - 被actions掃描的逗號隔開的packages列表。
        configProviders - 逗號分隔的實現了ConfigurationProvider接口(建造Configuration時被使用)的實現類。
        * - 任意的struts常量。
    通過重載createDispatcher()方法,可以自定義dispather。
   
    屬性列表:
        (1)actionMapper:通過注入,提供一個ActionMapper實例。
        (2)dispatcher:暴露給子類一個Dispatcher實例。
        (3)encoding:存儲StrutsConstants.STRUTS_I18N_ENCODING的設置。
        (4)filterConfig:通過初始參數,提供一個FilterConfig實例。
        (5)lastModifiedCal:在緩存靜態content,提供一個格化的日期用於設定頭信息。
        (6)log:提供一個logging實例。
        (7)patchPrefixs:存儲靜態資源的路徑前綴信息。
        (8)serveStatic:存儲StrutsConstants.STRUTS_SERVE_STATIC_CONTENT的設置。
        (9)serveStaticBrowserCache:存儲StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE的設置。
    方法列表:
        (1)copy(InputStream input, OutputStream output):從input複製數據到output。
        (2)createDispatcher(FilterConfig filterConfig):創建默認的dispatcher對象,如果需要的話,子類可以重載此方法,
        自定義一個dispatcher對象。
        (3)destory():調用dispatcher.cleanup(),依次釋放本地線程,銷燬dispatcher對象。
        (4)doFilter(ServletRequest request, ServeltResponse response, FilterChain chain):處理一個action或處理一個請求
        的靜態內容。
        (5)findInputStream(String name, String packagePrefix):搜索類路徑下的靜態資源。
        (6)findStaticResoruce(String name, HttpServletRequest request, HttpServletResponse response):搜索靜態的資源,
        直接複製到相應response的頭信息中。
        (7)getContentType(String name):獲取指定資源的contentType。
        (8)getFilterConfig():獲取FilterConfig實例。
        (9)getServletContext():給WebLogic的一些版本提供一個工作區。
        (9)init(FilterConfig filterCongfig):創建默認的dispatcher對象和設置靜態資源的默認包信息來初始化filter。
        (10)parse(String packages):返回一個數組通過解析一個指定逗號分隔的packages列表。
        (11)prepareDispatcherAndWrapRequest(HttpServletRequest request, HttpServletResponse response):對給定的request
        對象進行封裝返回一個封裝HttpServletRequest對象。例如顯示的處理multipart數據。
        (12)setMapper(ActionMapper actionMapper)
        (13)setEncoding(String val)
        (14)setServeStaticContent(String val)
        (15)setServeStaticBrowserCache(String val)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章