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

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

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

    小雨開源

    我也加入到了開源隊伍中了

    常用鏈接

    統計

    最新評論

    創造中國神話的MVC框架如何改變Web

      他們說:“Web改變世界,我們改變Web”,你知道是誰改變了誰嗎?

      他們說:“From the earth to the moon, and ready for Mars!”,你ready for what呢?

      他們勇敢,他們開放,他們懂得分享,所以他們選擇開源,并且可以自豪地宣布,他們活在“勇敢者的新世界”里。而同樣作為程序員的你,你的世界又是什么樣的呢?

      這里的“他們”,我想我不提大家已經知道是誰,就是來自中國的開源項目operamasks。他們雖然沒有創造世界神話(不知道第四個通過JavaEE5認證的服務器算不算),但他們確實創造了中國神話,如果你不服,那么你能舉出一個在他們領域里面比他們成功的同類產品嗎? 

      成功者都常說,“細節決定成敗”,只有為用戶考慮到各種細節,用戶才會支持你。Operamasks的成功,我覺得除了他們的“勇敢”以外,還有一個重要因素是“細節”,他們考慮到了很多細節,很多都是在JSF這樣一個“標準”層面的東西無法強制規定死,但往往對用戶來說又是非常實用的細節,還有解決了很多常遇到的繁瑣細節。

      道理及感嘆在這里就不想多發了,我想大家都關注的是具體的技術,所以本文就簡單例舉一下operamasks中的一些比較具有人性及親和力的細節,看了后我想使用JSF開發的你一定很覺得非常體貼。
     

      1、 Kill掉JSF中令人討厭的配置

      一個簡單類似的注冊示例,成功就導航到/accepted.jsp去,而拒絕就導航到/accepted.jsp。

    ManagedBean中

     
    public String signup() {

        
    if (Math.random() < 0.2) {

          
    return "accepted";

        } 
    else {

          
    return "rejected";

        }

      }


      讓標準JSF來干吧,只是為了一個簡單的跳轉,你就需要配置下面這樣一堆html,你估算一個項目下來的配置文件代碼是多少。

    <faces-config>

      
    <navigation-rule>

        
    <from-view-id>/signup.jsp</from-view-id>

        
    <navigation-case>

          
    <from-outcome>accepted</from-outcome>

          
    <to-view-id>/WEB-INF/results/accepted.jsp</to-view-id>

        
    </navigation-case>

        
    <navigation-case>

          
    <from-outcome>rejected</from-outcome>

          
    <to-view-id>/WEB-INF/results/rejected.jsp</to-view-id>

        
    </navigation-case>

      
    </navigation-rule>

    </faces-config>


      而用operamasks,你的代碼只需要寫成下面這樣即可:

     
    public String signup() {

        
    if (Math.random() < 0.2) {

          
    return "/WEB-INF/results/rejected.jsp ";

        } 
    else {

          
    return "/WEB-INF/results/accepted.jsp ";

        }

      }


      也就是說operamasks幫你吞掉了這些無味又沒有太多營養的配置文件,并幫你消化,你說他是不是很人性。 

      另外,比如我們想要用到一個ManagedBean,標準JSF需要在配置文件中寫一堆的配置文件,如下:

    <faces-config>

      
    <managed-bean>

        
    <managed-bean-name>myBean</managed-bean-name>

        
    <managed-bean-class>

          package.MyBean

        
    </managed-bean-class>

        
    <managed-bean-scope>request</managed-bean-scope>

      
    </managed-bean>

    </faces-config>



      而operamasks設計了一套注解annotation標簽,你只需要在類的聲明前加上一個@ManagedBean標簽即可,如下:

    @ManagedBean(name="myBean", scope=ManagedBeanScope.REQUEST)

    public class MyBean {

    }


      類似這樣的細節還有很多,讓我們慢慢去發掘吧。

     

    2、用Ajax是那樣方便

      不管你信不信,事實擺在那里他真的很方便,Ajax的無刷新的效果對于Web應用來說確實很酷也很鉉。對于傳統的JSF實現,要想用Ajax你就要借助其它的一些Ajax框架,名字大一點算是ajax4jsf吧。下面看一個動態刷新頁面中id為msg處的內容的示例:

      首先要定義一個JSF標簽

          
    <h:outputText id="msg" value="#{bean.text}" />
      

      然后定義一個ajax2jsf的按鈕標簽:

    <a4j:commandButton reRender="msg" value="Submit"/>


      而operamasks中的按鈕標簽仍然是:

    <h:commandButton value="Server Submit" />


      不懂JSF的同仁一定都覺得怪,得懂行的就知道。這個<h:commandButton value="Server Submit" />可是在JSF的JCP中規定的標簽標準啊,這個是任何支持JSF的開發工具都能認識的,當然程序員就不用說了。而那個什么<a4j:commandButton>是什么,那個reRender屬性,更是怪怪的,鬼二哥Studio才會認他。


    3、Rich Components的集成

      看過Operamasks有名的jsfdemo示例吧,我們來看看反應。一些菜鳥感嘆說:“發漂亮啊,太偉大了!”;一些小牛們會眼紅紅地生悶氣,怎么我才想到的你就做出來了;一些大牛們會說:“這不是偷人家ext的嗎?”,幽默一點會說:“我認為是是進到了extjs.com”;還有一些很有尊嚴并非常愛國的人會說:“真丟無恥,真丟中國人的臉,把別人的東西改改就說成自己的了,真賤……*&^&^%%^&8…”。

      上面的種種反應應該歸納為中國開源的特色悲喜劇。這里我想說的是,如果你真正花一點時間去了解一下Operamasks、了解一下Ext、了解一下Rich Components,那么所有你就不會成為上面悲喜劇中主角。

      我們知道Java跟Web式的Rich Components也無法,跟Ajax也無關。Ext專用于Web式的Rich Components,但對于企業級的應用來說,他是解決了很小的一部分問題,而且單獨使用Ext要寫很多很多的跟很酷的Ajax效果一樣很酷又很讓人頭暈的Javascript。那么該如何解決這問題呢?很明顯,只有大家合作。Operamasks也就通過集成同樣是開源的Ext項目來實現了豐富的Rich Components,你可以像開發Delphi或VB那樣,直接往界面上拖出一棵非常實用的樹出來。Rich Components的集成中有很多細節及技巧,本文就不例出。
     

      其實細節還存在很多地方,比如多國語言中的小標簽,注入Spring中的Bean,由于研究Operamask的時間比較短,而且資料也比較少(哪位朋友如果有好的資料或示例方便的話請發一些給我學習),所以暫時就寫這些,以后會逐漸以大家分享。 

    后記:

      雖然才開始投身開源的世界,但發現這個純技術的世界并不是想象中的那么單純。我上一篇寫過《中國java開源界最可愛的人們》一文,從一些同仁們的回復看出大家對中國的開源(包括項目、環境、產品、人品)仍然很悲觀,甚至還存在一些心理陰暗的人,篇造出什么“軟件界的洪志 lee”之類的大詞,也許就恐天下不亂吧。

    posted on 2007-12-14 09:20 小雨開源 閱讀(2247) 評論(19)  編輯  收藏

    評論

    # re: 創造中國神話的MVC框架如何改變Web[未登錄] 2007-12-14 09:29 無名

    也就是說operamasks幫你吞掉了這些無味又沒有太多營養的配置文件,并幫你消化,你說他是不是很人性。

    =====================================================

    建議你好好學習一下為什么會有配置文件的出現

    如果view的路徑變了,是 recompile 方便呢還是改變一下配置文件方便呢  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 09:33 小雨開源

    @無名

    兄臺注意看我的這一句:“吞掉了這些無味又沒有太多營養的配置文件”,“沒有太多營養”并不是“完全沒有營養”。所以如果在你說的那種情況配置文件是有營養價值的。但是80%的情況下,我們總不會沒事總去掉一個已經事先定好的配置文件的文件名或路徑吧。注意這里說的是80%,不是100%。  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 10:46 隔葉黃鶯

    return "/WEB-INF/results/accepted.jsp ";

    寫在代碼里其實對頁面流的理解極不利的

    這要去批評 struts/webwork/spring mvc 的做法都是有問題的,或者說不符合中國人的習慣?  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 10:59 guest

    @小雨開源
    想省事干脆去用Rails,何必用那個四不像的operamasks  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 11:30 小雨開源

    @guest
    Rails也就是考慮了這些細節,所以才不錯。但不論如何,他跟JavaEE不是一個級別的!  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 11:48 guest

    @小雨開源
    呵呵,對啊,Operamasks這樣肆意亂改(或者叫踐踏)JSF到時也會跟JavaEE不在一個級別的。  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web[未登錄] 2007-12-14 15:11 小雨開源

    @guest
    知道EJB3與EJB2的區別嗎?:-)  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 15:19 guest2

    @小雨開源

    你知道spring2與spring1的區別嗎?
    你知道java與php的區別嗎?
      回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 15:21 guest3

    @小雨開源
    你知道annotation與XML的區別嗎?
      回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 16:14 小雨開源

    @guest,guest2,guest3

      拜托,不要跑題,OK。請你首先要有一點常識,你也就不會鬧“樣肆意亂改(或者叫踐踏)”的笑話,首先operamasks是一個JSF的實現,JSF規范里面制訂了的,他都實現了,他再牛還不能牛到隨便改標準的地步,又何來踐踏呢?如果只是因為多了一些實用功能支持,就叫踐踏的話,那么JPA又怎么可能出來呢?眾多的JPA實現中,也增加了很多自己的一些特色功能,你能說別人在踐踏JPA嗎。
      好不好用,要以事實為基礎,我想樓上的應該沒有用過JSF吧,知道JSF怎么用嗎?知道JSF與Struts2的區別嗎?如果你沒有用過,又怎么知道這些細節上的改進,不是用戶所需要的呢?  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 16:53 mic

    性能是核心 解決問題是關鍵 包裝來包裝去的干啥呀 拷的煩事(code fans)們當下流行祼睡 哈哈哈  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 17:18 gr8vyguy

    又見標題黨  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 17:56 我來也

    賣拐的,忽悠繼續忽悠~~  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 21:14 kk

    Web應用真的需要MVC嗎?不要以為這是一個蠢問題,社區里已經有很多針對這個問題的討論,甚至有人說MVC已死(http://blog.jeffhaynie.us/mvc_is_dead.html),這里說的MVC指的是那種以服務器為中心得web架構,比較常見的是struts之類的框架,從根本上講jsf也是基于MVC的框架(雖然說不只是MVC)。在Ajax出現之前,瀏覽器的功能基本上只是顯示頁面,從業務邏輯到UI渲染都是服務器的責任,mvc在這時候是理所當然最好的解決方案。
    但是web的世界已經開始步入2.0的時代,基于Ajax,Widget,REST等等技術的web開發模式也逐漸被越來越多人采用,比起傳統的MVC模式來說,它們之間的區別在于,瀏覽器的能力得到了開發,相當一部分服務器的轉移到了瀏覽器端,隨之而來的是view的前移,controller的前移,服務器逐漸退化為無狀態的服務和數據提供者,在這種情形下我們還需要復雜的struts, jsf之類的mvc框架來開發web應用嗎?
    我對openmask不是很了解,但是基于jsf的框架是否符合web開發發展趨勢是非常值得我們思考。是改變了web,還是被web淘汰?  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-14 23:22 hejianhuacn

    無論是JSF還是Asp.Net它們都是 頁面型MVC的代表:豐富的組件庫,會為我們的節省不少的開發時間,而且也能在一定程度上對代碼風格作出統一。都是為了簡化開發,增加開發速度,當我們連HelloWorld都寫不 出來,或者說寫不好的時候,去考慮整個框架的擴展性我不知道有沒有必要。當然,對大牛級的人我覺得設計東西的時候自然會考慮擴展性的,其實他們就是不考慮在舉手投足之間還是會流露出來,因為經驗就是為了讓自己活得更好、更舒坦,所以沒人會愿意自己的日程安排被打亂,大牛們就更不愿意了。但人總有成長階段,一開始如果能夠寫足夠多的JSP或Servlet代碼絕對不是壞事,經驗都是建立在痛苦之上的,為什么有這么多框架出來?就是因為大家被折騰得不行了,然后就有受不了的大牛們站出來!所以某個時候某樣東東的出現都是有他的道理的,JSF那么牛他還不是建立在Servlet的基礎上的嘛。樓上兄弟的Web2.0 觀點真的有點讓人心驚,讓我想起公司的那些出去忽悠的高層們,我覺得Web2.0 應該是一種整體架構,一種新的用戶體驗,而不是說展現和交互方式由什么來實現,這不是重點。就像重構所推崇的一些原則,兄弟如果你覺得自己心里對業務模型足夠的有數的話,開始寫代碼吧,然后在適當的時候進行代碼的重構可能會更好。我們要記住所謂JSP、JSF、ASP.Net、PHP它們都只是“翻譯引擎”,把代碼翻譯成HTML或是瀏覽器能夠理解的一些語法規則而已包括JavaScript在內的腳本語言都是這些規則的一部分,所有的封裝都是為了更快的實現需求,讓開發費用更低,至于有沒有考慮會不會讓程序員抓狂,就不得而知,所以看開一些吧^_^  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2007-12-26 19:40 回復

    金蝶的東西要慎用啊,吃人不吐骨頭的主  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2008-02-20 14:13 范連洲

    @無名
    同意你的看法(寫程序時間不少了,不過返回這些東西,感覺很奇怪),那東西寫在程序里讓人看得頭暈眼花,如果結構復雜,可能會出現
    return "/WEB-INF/results/accepted.jsp ";
    一大片。并且編譯好后無處查看網站流轉過程。  回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web 2008-02-24 02:53 張旭

    現在才看到這篇文章,充分的說明了我不夠關注外面的世界,每個人發表的見解會因為對技術的理解、經歷、知識體系各方面相關,但是每個人都有權利發表自己的看法,所以我盡可能客觀的發表我個人的感受和看法。
    @無名
    關于“配置文件還是annotation”的問題,這是一個系統設計的模式的問題,二者之間需要有一個平衡,將不易變或用戶不可控元信息存儲在annotation中,將易變的和用戶可參與的元信息存儲在配置文件中。
    基于JDK1.5的大多數平臺級的框架都提供對二者的并行支持,使用配置文件還是annotation完全是由使用者設計決定,平臺并不關心,只提供支持,這可以處理大部分實際應用場景。
    @guest,guest2,guest3
    你們所發表的見解,客觀說,我覺得我無法評論。
    @kk
    我個人覺得無需討論概念及趨勢,我選擇在實踐中感受和體會。
    @回復
    我個人覺得不論發表什么內容,都希望能夠有依據。
    @小雨開源
    感覺很欣慰,畢竟有人在用它,但是我覺得做技術要踏實一些,建議你也如此。
      回復  更多評論   

    # re: 創造中國神話的MVC框架如何改變Web[未登錄] 2008-05-08 15:20 過客

    我覺得return "/WEB-INF/results/accepted.jsp ";這種不太好。
    因為如果就是一兩個返回,比較簡單。直接寫在代碼里面好了。
    但是往往從管理人員視角來說,需要看到整體頁面跳轉情況。

    其實獨立寫XML配置我覺得不必直接return url好,但是有一個有點-->
    方便寫一個可視化編輯頁面跳轉的工具。比如eclipse 3.3 netbeans6.0里面都帶了的哪個face_config編輯工具。我覺得就很方便。

    主要是問題觀察視角的問題,"視角"在現在流行語中,也就是所謂的"Aspect"吧。
      回復  更多評論   


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


    網站導航:
     
    主站蜘蛛池模板: 国产成人AV片无码免费| 国产啪精品视频网站免费尤物| 台湾一级毛片永久免费| 亚洲精品高清久久| 毛片无码免费无码播放| 亚洲天堂中文字幕| 91热成人精品国产免费| 亚洲国产成人手机在线电影bd | 亚洲毛片免费视频| 69影院毛片免费观看视频在线| 精品日韩亚洲AV无码一区二区三区| 30岁的女人韩剧免费观看| 亚洲国产精品久久人人爱| 免费观看成人毛片a片2008| 亚洲精品色播一区二区 | 国产自国产自愉自愉免费24区| 亚洲精品无码mv在线观看网站| 免费看一区二区三区四区| 亚洲国产成人私人影院| 桃子视频在线观看高清免费完整| 亚洲精华液一二三产区| 国产精品亚洲mnbav网站 | 一区二区三区无码视频免费福利| 亚洲好看的理论片电影| 成人免费毛片内射美女-百度| 亚洲欧美乱色情图片| 亚洲国产aⅴ综合网| 久久午夜夜伦鲁鲁片无码免费| 亚洲国产精品久久久久秋霞影院| 天天摸天天碰成人免费视频| 一级A毛片免费观看久久精品 | 免费无码黄动漫在线观看| 一级做a爰片久久毛片免费看| 亚洲av鲁丝一区二区三区| 18国产精品白浆在线观看免费| 亚洲AV网一区二区三区| 亚洲成AV人在线播放无码| 99精品全国免费观看视频| 成人免费av一区二区三区| 亚洲午夜国产精品无卡| 亚洲乱码日产精品a级毛片久久|