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

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

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

    kapok

    垃圾桶,嘿嘿,我藏的這么深你們還能找到啊,真牛!

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      455 隨筆 :: 0 文章 :: 76 評論 :: 0 Trackbacks
    http://blog.csdn.net/chenyun2000/archive/2004/11/18/186639.aspx

    (摘自《
    Expert One-on-OneJ2EE Development without EJB》第13章 Alternative Approaches to Web MVC)

    雖然當(dāng)前流行的是基于請求驅(qū)動的Web MVC框架,但在J2EE中還有兩種比較重要的替代開發(fā)方法:Portlets和基于事件驅(qū)動的Web MVC框架。

    1PortalsPortlets

    1)概述

    l         Web Portal由多個完全不相關(guān)的部分組成的單個HTML頁面實現(xiàn),每個部分由controller-view組件實現(xiàn)

    l         Portal容器是由工作流控制的

    l         controller-view組件在Portal中稱為Portlet

    l         每個Portlet是一個自交互的組件,而不是一個工作流控制的下級代表

    l         Portlet就像MVC的控制器一樣,接收表示請求,檢查請求參數(shù),創(chuàng)建數(shù)據(jù)模型,轉(zhuǎn)向顯示視圖

    2JSR168

    l         JSR168JavaPortlet規(guī)范,定義了類似于ServletAPI和環(huán)境:javax.portlet.Portlet

    l         不同于ServletPortlet不是一個響應(yīng)HTTP請求處理的組件,而是通過Portal容器的工作流處理器獲得通知,響應(yīng)各種命令的回調(diào)組件:

    ?         doView(RenderRequest, RenderResponse):顯示Portlet缺省視圖

    ?         doEdit(RenderRequest, RenderResponse):顯示Portlet編輯視圖(如果支持的話)

    ?         doHelp(RenderRequest, RenderResponse):顯示Portlet幫助視圖(如果支持的話)

    ?         processAction(ActionRequest, ActionResponse):在Portlet提交請求給自己時,由容器調(diào)用(對于任何視圖模式)

    l         在一個典型的JSR168 Portlet中,doView充當(dāng)組件控制器,準(zhǔn)備數(shù)據(jù)模型,可能訪問中間層資源和服務(wù),轉(zhuǎn)向到作為Portlet視圖的JSP

    l         自遷移的表單提交,使用標(biāo)準(zhǔn)的HTML <form>標(biāo)記,使用Portlet<portlet:actionURL>標(biāo)記指定其action屬性,Portlet容器會使用提交的參數(shù)來調(diào)用processAction,通過返回視圖模式來調(diào)用doViewdoEditdoHelp

    3)部署Portlet

    l         Portlet集合以標(biāo)準(zhǔn)的WAR文件部署,只是Portlet的定義在/WEB-INF/portlet.xml中,而不是使用web.xml

    4)共享

    l         Portlet規(guī)范定義了它自己的MVC機(jī)制,來適應(yīng)自包含Portlet的需求

    l         如果Portlet容器在J2EE服務(wù)器中運行,Portlet可以通過JNDI來訪問中間層的資源和服務(wù)

    l         但是,Portlet看上去不可能向Web應(yīng)用程序的其它組件共享本地資源,因為它們位于獨立的環(huán)境

     

    2、事件驅(qū)動的Web MVC框架

    1)概述

    l         事件驅(qū)動框架的目標(biāo)是應(yīng)用桌面UI編程到Web環(huán)境

    l         它們不把焦點集中在表單提交到依次映射到控制器進(jìn)行請求處理的URL,而是把表單組件關(guān)聯(lián)到由事件調(diào)用的監(jiān)聽器

    l         它們通常不把焦點集中呈現(xiàn)給定模型對象的嵌入式視圖技術(shù),而是將Web頁面作為保持狀態(tài)和知道任何應(yīng)用不同的皮膚呈現(xiàn)自己的組件集合

    l         EchoWingS這樣的框架,提供接近Swing的編程模型,由UI組件類生成實際的HTML代碼,這使得Web設(shè)計者不容易進(jìn)行定制,限制了定制HTMLJavaScript的靈活集成,而且會生成出大量不需要的會話狀態(tài)

    l         其它框架象TypestryJSFJSR127)結(jié)合了模板方法和事件處理機(jī)制:HTML布局在模板(如JSPVelocity)中定義,實際的工作流和視圖呈現(xiàn)由處理頁面中表單組件事件的框架控制器管理

    l         后來的基于模板的方法在一定程度上受到微軟的ASP.NET,象JSF在很多方面就像是Java世界中的ASP.NET

    2Typestry

    l         Typestry將焦點集中在完全分離的Java代碼和HTML模板,將每個頁面分成3個部分:

    ?         HTML模板:純HTML標(biāo)記,包含由jwcid屬性標(biāo)記的動態(tài)部分

    ?         頁面規(guī)范:定義頁面實現(xiàn)類和頁面中使用的組件

    ?         頁面類:定義模型和頁面的監(jiān)聽器

    l         每個頁面由任意數(shù)量和嵌套的組件組成,每個組件同樣被分成類似的3個部分:

    ?         HTML模板:用于組件的純HTML標(biāo)記,包含由jwcid屬性標(biāo)記的動態(tài)部分

    ?         頁面規(guī)范:定義組件實現(xiàn)類和使用的嵌套組件

    ?         頁面類:定義模型和組件的監(jiān)聽器

    l         TypestryHTML模板不包含腳本和自定義標(biāo)記,而是由jwcidJava Web組件ID)屬性標(biāo)識的特定標(biāo)記,典型的標(biāo)記是<span jwcid=”…”>,在運行期,這些標(biāo)記會被Typestry組件生成的HTML代碼替代

    l         TypestryHTML模板可以在瀏覽器和HTML編輯器中顯示,非標(biāo)準(zhǔn)的jwcid屬性標(biāo)記會被忽略

    l         TypestryHTML模板和JSPVelocity使用標(biāo)記代碼、動態(tài)表達(dá)式和控制流邏輯實現(xiàn)的動態(tài)視圖不同,是靜態(tài)模板,需要使用頁面規(guī)范合成來產(chǎn)生實際的動態(tài)視圖

    l         Typestry會處理所以的工作流管理,而不需要接觸HttpServletRequest HttpServletResponse

    l         表單提交的數(shù)據(jù)綁定到頁面或組件實例的屬性(Model),控制邏輯由頁面或組件類的監(jiān)聽器實現(xiàn),執(zhí)行某個動作或轉(zhuǎn)到不同頁面(Controller

    l         Typestry的頁面實例是pooled;頁面屬性如果需要對相同用戶在不同頁面之間保持狀態(tài),可以標(biāo)記為持久,Typestry會將頁面屬性保存到HttpSession

    l         Typestry應(yīng)用程序需要一個應(yīng)用程序規(guī)范來定義有效的頁面,也決定被使用的引擎類

    l         引擎類是服務(wù)器端的狀態(tài)管理器,通常保存在HttpSession中保持兩種類型的應(yīng)用程序特定狀態(tài)對象:

    ?         Visit對象:包含當(dāng)前訪問用戶關(guān)聯(lián)的所有狀態(tài),對應(yīng)于HttpSession屬性

    ?         Global對象:為應(yīng)用程序的所有引擎實例共享,對應(yīng)于ServletContext屬性

    l         和頁面一樣,引擎實例是pooled

    3JSF

    l         JSF將焦點集中在使用JSP標(biāo)記庫創(chuàng)建表單,在JSP代碼中嵌入驗證器和導(dǎo)航規(guī)則的引用

    l         驗證器、導(dǎo)航規(guī)則和被管理Bean(如表單對象)在faces-config.xml中定義

    l         JSF視圖通過FacesServlet被調(diào)用(View

    l         Action由命令風(fēng)格的事件監(jiān)聽器實現(xiàn),被調(diào)用后返回字符串結(jié)果,通常是轉(zhuǎn)向視圖的導(dǎo)航規(guī)則引用,可以通過FacesContext訪問它們的環(huán)境中的對象(Controller

    l         表單對象是簡單的JavaBeanModel

    l         組件由自定義標(biāo)記實現(xiàn),可以通過不同的插件式呈現(xiàn)器改變皮膚,這就允許重用相同的JSF視圖到不同的目標(biāo)格式,如HTMLWML(視圖無關(guān)模型)

     

    3、各種Java/J2EE方案的選擇

    l         ASP風(fēng)格的腳本編程:純JSP

    l         CGI風(fēng)格的請求處理:Servlet,主要是二進(jìn)制內(nèi)容

    l         基于Servlet/JSP的自定義MVC方案:簡單工作流

    l         使用JSP的請求驅(qū)動Web MVC框架:StrutsWebWork等(很多選擇)

    l         使用VelocityFreemarker等模板引擎的請求驅(qū)動Web MVC框架

    l         使用XSLTXMLCXML技術(shù)的請求驅(qū)動Web MVC框架

    l         Swing風(fēng)格呈現(xiàn)GUI組件:EchoWingS

    l         基于頁面規(guī)范的GUI創(chuàng)建:Typestry

    l         ASP.NET風(fēng)格的GUI創(chuàng)建:JSF


    posted on 2005-03-22 15:54 笨笨 閱讀(181) 評論(0)  編輯  收藏 所屬分類: ALLWeblogic Portal
    主站蜘蛛池模板: 亚洲精品美女久久久久9999| 免费大片在线观看网站| 亚洲不卡中文字幕无码| 黄床大片免费30分钟国产精品| 亚洲AV无码乱码在线观看性色扶 | 亚洲欧美成人综合久久久| 在线观看免费av网站| 日韩精品亚洲人成在线观看| 免费国产99久久久香蕉| 亚洲成人免费电影| 一二三四在线观看免费高清中文在线观看| 亚洲国产成人久久| 日本特黄特色aa大片免费| 国产精品亚洲а∨天堂2021 | 青青青亚洲精品国产| 亚洲日韩国产精品乱| 在线观看免费视频网站色| 久久久婷婷五月亚洲97号色| 免费能直接在线观看黄的视频| 亚洲精品中文字幕无乱码麻豆| 在线免费观看一级毛片| 污视频网站在线免费看| 亚洲免费人成在线视频观看| 99re视频精品全部免费| 亚洲日本VA午夜在线影院| 国产国拍亚洲精品福利 | 久久亚洲AV无码精品色午夜| 国产无人区码卡二卡三卡免费| 久久久久亚洲精品无码网址色欲 | 亚洲精品中文字幕无乱码麻豆| 中字幕视频在线永久在线观看免费| 亚洲国产精品精华液| 中文字幕精品亚洲无线码一区| 99久久精品国产免费| 狼人大香伊蕉国产WWW亚洲| 亚洲日韩欧洲无码av夜夜摸| 四虎精品视频在线永久免费观看| 色婷婷亚洲一区二区三区| 亚洲产国偷V产偷V自拍色戒| 国产美女a做受大片免费| 毛片免费在线观看|