<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Struts2性能問題的最終解決方法

    Posted on 2008-09-02 21:02 云自無心水自閑 閱讀(5460) 評論(5)  編輯  收藏 所屬分類: Java心得體會Struts2

    通過上兩篇文章的研究,
    詳見:
    我的struts2項目性能調優三步曲:http://m.tkk7.com/usherlight/archive/2008/07/01/211869.html
    我的struts2項目性能調優三步曲(續):http://m.tkk7.com/usherlight/archive/2008/07/12/214462.html
    得出的結論是:影響Struts2性能的原因在于Ognl的Value Stack的性能不佳。那么如果解決呢:


    * 我首先嘗試使用JSF。
    一開始選擇JSF的原因主要是:
    1、Stuts2自己提供了JSF的Plugin
    2、JSF是Sun作為標準提出,而且已經通過的。從Google的趨勢搜索上也可以看出,搜索JSF的人在增多。
    3、JSF作為一種以組件為基礎的Web Framework有其獨到之處,其內建的和其他許多開源的組件使用起來相當方便、強大。當然,對于不同的應用來說也有不利之處(后面會提到),但是如果能夠堅持長期使用,逐漸積累組件庫的話,JSF是一個很好的選擇。
    4、JSF的文檔(或者說是書籍)還是比較多的。


    經過測試使用后,發現其性能與Struts2相比確實提升不少。但是后來遇到了一個問題,所以最后還是放棄了JSF。這個問題是關于JSF的DataTable的,JSF提供的DataTable其實使用起來很方便,可定制化程度也不錯,只是剛好缺少了我所希望的功能(也可能是我不知道如何實現)。我的應用中的DataTable是一個動態的結果集,也就是說輸出的列是不能預先確定的,而DataTable卻要求先聲明好所有的DataColumn,我不知道如何解決這個問題。所以最后放棄了JSF。


    * 我的第二個選擇是FreeMarker
    選擇FreeMarker的原因是:
    1、FreeMarker是Struts2缺少的模板引擎,Struts2的標簽大部分是使用FreeMarker的,使用FreeMarker的話,連Plugin都省去了。
    2、FreeMarker相對比較輕量級、因為他本身只是一個模板引擎,與JSF這樣一個大而全的WebFramework相對,輕巧多了。
    3、FreeMarker的學習起來非常容易,只要把他網站上的Document過一遍,基本上就OK了。
    4、FreeMarker雖然體積小,功能還是相當強的,I18N,Converter之類的東西基本都全了,至少我所需要的功能全有。
    5、FreeMarker相當靈活,他不象JSF把底層的東西封裝了以后,暴露出一些屬性可以設置,如果你需要的屬性不能設置,你就沒有辦法了。在FreeMarker你直接操作最底層的東西,擁有很大的靈活性。當然,犧牲了一些方便性,比如,要用FreeMarker生成一個下拉框,就需要較多的工作量了。


    測試之后,使用FreeMarker的性能很不錯,在大數據量操作的情況下,至少一個數量級的性能提升。

    主要原因是freeMarker的值直接從action中取得的,所以避開了ognl的stack value.


    * 我的最終結論,如果要在Struts2中,展示或者操作大量數據,強烈推薦使用FreeMarker。





    評論

    # re: Struts2性能問題的最終解決方法  回復  更多評論   

    2008-09-02 21:45 by 藍劍
    不太明白,怎樣不用Ognl的Value Stack而使用Freemarker?能詳細說說嗎?

    # re: Struts2性能問題的最終解決方法[未登錄]  回復  更多評論   

    2008-09-03 08:54 by jones
    JSF的DataTable可以通過binding屬性直接綁定到backing bean中實現后臺完全控制DataTable

    # re: Struts2性能問題的最終解決方法[未登錄]  回復  更多評論   

    2008-09-03 09:51 by 大王
    為什么不用JSP?

    # re: Struts2性能問題的最終解決方法  回復  更多評論   

    2008-09-03 14:21 by usherlight
    在struts.xml中,跳轉頁面的屬性設置為freeMarker
    <result name="success" type="freemarker">success.ftl</result>
    這樣,結果頁面由freeMarker來負責render, 關鍵點是:freeMarker的值是可以直接從action中取得的,所以避開了ognl的stack value.

    # re: Struts2性能問題的最終解決方法  回復  更多評論   

    2008-09-04 09:15 by 云自無心水自閑
    @jones
    謝謝分享你的經驗
    主站蜘蛛池模板: 亚洲综合最新无码专区| 成人无码精品1区2区3区免费看| 50岁老女人的毛片免费观看| 黑人精品videos亚洲人| 亚洲熟妇av午夜无码不卡| 久久不见久久见免费视频7| 亚洲网站在线播放| 日韩在线视精品在亚洲| 国产禁女女网站免费看| 久久久久亚洲国产AV麻豆| 免费在线观看日韩| 九九99热免费最新版| 亚洲AV综合色一区二区三区| 777爽死你无码免费看一二区| 亚洲精品在线网站| 成人免费视频88| 亚洲av无码不卡| 免费看h片的网站| 亚洲国产成人久久综合| 国产国产成年年人免费看片| caoporn成人免费公开| 亚洲综合成人网在线观看| 毛片a级毛片免费播放100| 国产精品亚洲AV三区| 中文亚洲成a人片在线观看| 国产va在线观看免费| 亚洲校园春色另类激情| 99久久国产免费-99久久国产免费| 亚洲精品在线免费观看视频| 日韩毛片无码永久免费看| caoporm超免费公开视频| 亚洲欧洲日韩不卡| 尤物永久免费AV无码网站| 国产男女爽爽爽免费视频| 亚洲色图黄色小说| 免费不卡中文字幕在线| 18pao国产成视频永久免费| 国产精品亚洲综合一区在线观看 | 亚洲国产精品一区二区九九| 中文字幕无码免费久久| 亚洲日韩精品无码专区加勒比☆ |