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)
(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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.