ZeroBlue

          留出時間,讓自己微笑。
          posts - 6, comments - 12, trackbacks - 0, articles - 0
             :: 首頁 ::  :: 聯系 ::  :: 管理

          Appfuse1.9.3 for springMVC源碼解讀(1)-- 從web.xml開始

          Posted on 2006-08-29 13:48 zeroblue 閱讀(1915) 評論(0)  編輯  收藏 所屬分類: Appfuse

          web.xml中定義的過濾器:
          ??????? (注:Appfuse的構建網上有豐富的資料,在此不再贅述)

          1、securityFilter

          < filter >
          ????????
          < filter-name > securityFilter </ filter-name >
          ????????
          < filter-class >
          ????????????org.acegisecurity.util.FilterToBeanProxy
          ????????
          </ filter-class >
          ????????
          < init-param >
          ????????????
          < param-name > targetClass </ param-name >
          ????????????
          < param-value >
          ????????????????org.acegisecurity.util.FilterChainProxy
          ????????????
          </ param-value >
          ????????
          </ init-param >
          </ filter >

            此過濾器定義Acegi Security 應用。Acegi Security 被廣泛應用于Spring社區,在基于Spring的項目中提供全面的安全服務。它包含了一組接口和類,可以直接在Spring IoC容器中進行配置。Acegi Security 完全基于接口設計實現,為用戶定制和擴展提供了極大的空間。基于SpringAOP,Acegi Security 可以完成方法級的權限管理。
          (
          文檔
          ?下載)

          2、cacheFilter

          < filter >
          ????????
          < filter-name > cacheFilter </ filter-name >
          ????????
          < filter-class >
          ????????????com.opensymphony.oscache.web.filter.CacheFilter
          ????????
          </ filter-class >
           
          </ filter >

            OSCache是一個基于javaEE架構的緩存解決方案,主要針對頁面緩存。由OpenSymphony設計,它是一種開創性的JSP定制標記應用,提供了在現有JSP頁面之內實現高速緩存的機制。 其提供了內存和磁盤緩存兩種機制,這種緩存機制使你的Web應用具備了一定程度的容錯性,比如當數據庫因某些原因當掉時,遠程用戶仍能訪問緩存中的內容。
          ???
          但有意思的是,Appfuse并沒用使用這個頁面緩存機制。這個過濾器的filter-mapping被注釋掉了。如下:

          ?? <!-- ?Commented?out? for ? 2 ?reasons:?
          ??????????????????????????????????????????1 )?it ' s?a?pain?when?developing?JSPs,?and

          ?????????????????????????????????????? 2 )?it?causes?the?Signup?webtest?to?fail?
          ???????????????????????????????????????? 大意是說這東西使開發Jsp頁面變得很痛苦,并且無法測試(英文水平有限 ^_^)。
          ??????-->

          ????
          <!-- filter - mapping >
          ????????
          < filter - name > cacheFilter </ filter - name >
          ????????
          < url - pattern >* .jsp </ url - pattern >
          ????
          </ filter - mapping -->

          ( 文檔與下載? ?)

          3、clickstream

          < filter >
          ????
          < filter - name > clickstream </ filter - name >
          ????
          < filter - class > com.opensymphony.clickstream.ClickstreamFilter </ filter - class >
          </ filter >

          < filter - mapping >
          ????
          < filter - name > clickstream </ filter - name >
          ????
          < url - pattern >* .jsp </ url - pattern >
          </ filter - mapping >

          < filter - mapping >
          ????
          < filter - name > clickstream </ filter - name >
          ????
          < url - pattern >* .html </ url - pattern >
          </ filter - mapping >

          < listener >
          ????
          < listener - class > com.opensymphony.clickstream.ClickstreamListener </ listener - class >
          </ listener >


            又是opensymphony的東西,clickstream用來跟蹤用戶的頁面操作。其功能非常強大,通過過濾器我們可以跟蹤用戶的每一次點擊信息。并且在用戶的Session結束時,可以將用戶的跟蹤信息輸出到文件或形成一個輸出流以便處理。當用戶的Session開始時listener開始一次跟蹤,filter捕捉每一次請求。
          文檔與下載

          4、hibernateFilter

          ???? < filter >
          ????????
          < filter-name > hibernateFilter </ filter-name >
          ????????
          < filter-class >
          ????????????org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
          ????????
          </ filter-class >
          ????
          </ filter >

          ??
          < filter > ?
          ????????
          < filter-name > opensession </ filter-name >
          ?
          ????????
          < filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </ filter-class >
          ?
          ????????
          < init-param >
          ?
          ????????????
          < param-name > singleSession </ param-name >
          ?
          ????????????
          < param-value > false </ param-value >
          ?
          ????????
          </ init-param >
          ?
          ????
          </ filter > ?

            當使用hibernate的延遲加載時,你必須保證是在同一個Session中使用結果集,否則會拋出異常。而HibernateTemplate試圖每次執行時打開和關閉Session。這時就應該采用 OpenSessionInViewFilter模式。
          相關文檔
          5、UrlRewriteFilter

          ? < filter >
          ?  
          < filter-name > rewriteFilter </ filter-name >
          ??   
          < filter-class >
          ???    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
          ??   
          </ filter-class >
          ??  
          < init-param >
          ??? 
          < param-name > logLevel </ param-name >
          ???   
          < param-value > commons </ param-value >
          ? ?
          </ init-param >
          ?
          </ filter >
          < filter-mapping >
          ??
          < filter-name > rewriteFilter </ filter-name >
          ??
          < url-pattern > /* </ url-pattern >
          ??
          <!-- dispatcher>REQUEST</dispatcher>
          ???<dispatcher>FORWARD</dispatcher
          -->

          ?
          </ filter-mapping >

            Url重寫,通過配置文件改寫你的URL,將輸入的URL映射到真實的URL地址來達到URL美化的作用。
          文檔與下載

          6、sitemesh

          ? < filter >
          ??
          < filter-name > sitemesh </ filter-name >
          ??
          < filter-class >
          ???com.opensymphony.module.sitemesh.filter.PageFilter
          ??
          </ filter-class >
          ?
          </ filter >

            sitemesh是由一個基于web頁面布局、裝飾以及與現存web應用整合的框架。它能幫助我們在由大量頁面構成的項目中創建一致的頁面布局和外觀,?如一致的導航條,一致的banner,一致的版權,等等。它不僅僅能處理動態的內容,如jsp,php,asp等產生的內容,它也能處理靜態的內容,?如htm的內容,使得它的內容也符合你的頁面結構的要求。甚至于它能將html文件象include那樣將該文件作為一個面板的形式嵌入到別的文件中去。
          文檔與下載 )( 學習

          7、Display Tag Lib標簽庫

          < filter >
          ????????
          < filter-name > exportFilter </ filter-name >
          ????????
          < filter-class >
          ????????????org.displaytag.filter.ResponseOverrideFilter
          ????????
          </ filter-class >
          </ filter >

            Display Tag Lib是一個標簽庫,用來處理jsp網頁上的Table,功能非常強,可以對的Table進行分頁、數據導出、分組、對列排序等等,??而且使用起來非常的方便。能夠大大減少代碼量。
          文檔與下載

          8、GZIPFilter

          ???? < filter >
          ????????
          < filter-name > compressionFilter </ filter-name >
          ????????
          < filter-class > com.lady.webapp.filter.GZIPFilter </ filter-class >
          ????
          </ filter >

          將輸出流壓縮為GZIP格式,據說壓縮比率可達70%-80%,這樣輸出到客戶端的數據量大大減少,可以顯著的提高性能。這是一個Appfuse自定義的過濾器,詳情見下面鏈接。
          文檔

          最后一個是I18N應用的過濾器,不多說了。

          還有一個監聽器非常重要,即IntrospectorCleanupListener:

          ???? < listener >
          ????????
          < listener-class >
          ????????????org.springframework.web.util.IntrospectorCleanupListener
          ????????
          </ listener-class >
          ????
          </ listener >

          有現成的資料,COPY過來:
          spring中的提供了一個名為org.springframework.web.util.IntrospectorCleanupListener的監聽器。它主要負責處理由??JavaBeans Introspector的使用而引起的緩沖泄露。
          (引用:劉文濤的BLOG


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 兰州市| 舟山市| 温州市| 句容市| 崇州市| 五大连池市| 苗栗市| 崇信县| 日土县| 云龙县| 东明县| 乌海市| 三穗县| 神农架林区| 邵阳县| 防城港市| 紫阳县| 华亭县| 凤冈县| 平舆县| 集贤县| 永吉县| 温宿县| 海淀区| 昂仁县| 上栗县| 延边| 武城县| 固始县| 轮台县| 新密市| 清流县| 双桥区| 彰化县| 石林| 长寿区| 鹿邑县| 牡丹江市| 民县| 大田县| 桓仁|