web.xml配置struts過濾器struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter和FilterDispatcher的區別...

 

 FilterDispatcher是早期struts2的過濾器,後期的都用StrutsPrepareAndExecuteFilter了,如 2.1.6、2.1.8。StrutsPrepareAndExecuteFilter名字已經很能說明問題了,prepare與execute,前者表示準備,可以說是指filter中的init方法,即配製的導入;後者表示進行過濾,指doFilter方法,即將request請求,轉發給對應的 action去處理。FilterDispatcher是struts2.0.x到2.1.2版本的核心過濾器.!

StrutsPrepareAndExecuteFilter的優勢
       StrutsPrepareAndExecuteFilter是自2.1.3開始就替代了FilterDispatcher的,這樣的改革當然是有好處的.!爲什麼這麼說.? 應該知道如果我們自己定義過濾器的話, 是要放在strtus2的過濾器之前的, 如果放在struts2過濾器之後,你自己的過濾器對action的過濾作用就廢了,不會有效!除非你是訪問jsp/html!
       那我現在有需求, 我必須使用Action的環境,而又想在執行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!那麼StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在這兩個過濾器之間加上我們自己的過濾器.!
給你打個比喻, 現在有病人要做手術, 現在struts2要做兩件事, 搭病牀(環境),執行手術.! 那麼打麻藥的工作呢.? 不可能要病人站着打吧, 所以必須有病牀的環境,打完麻藥之後再動手術.! 這個比喻非常形象了.!
       如果是2.1.3之前的版本,用org.apache.struts2.dispatcher.FilterDispatcher,
否則,用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。
       從Struts2.1.3開始,將廢棄ActionContextCleanUp過濾器,而在StrutsPrepareAndExecuteFilter過濾器中包含相應的功能。
       三個初始化參數:
       1、config參數:指定要加載的配置文件。逗號分割。
       2、actionPackages參數:指定Action類所在的包空間。逗號分割。
       3、configProviders參數:自定義配置文件提供者,需要實現ConfigurationProvider接口類。逗號分割.
<span style="font-size:14px;"><filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class> 
    <init-param> 
        <param-name>actionPackages</param-name> 
        <param-value>com.cjm.web.action</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping></span>

 如果程序報類找不到異常,且後面有 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter等信息
可能是你的版本問題.解決方法是確定你的struts版本,如果是2.1.3之前的版本,用org.apache.struts2.dispatcher.FilterDispatcher,以後的版本則配置org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
發佈了23 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章