posts - 40,  comments - 187,  trackbacks - 0
          說在前面的話:?
          ??? 最近很忙很忙,很久沒吐過泡了,呵呵。近期筆者會(huì)將最近應(yīng)用Spring Portlet MVC開發(fā)Portlet的一些經(jīng)驗(yàn)和教訓(xùn)記錄在此,供大家共同研究,拍磚。


          Chapter1 相關(guān)介紹

          Portlet:
          ??? 一個(gè) Portlet 是以 Java 技術(shù)為技術(shù)的 Web 組件,由 Portlet Container 所管理,專門處理客戶的 request 以及產(chǎn)生各種動(dòng)態(tài)的信息內(nèi)容。Portlet 為可插式 ( pluggable ) 的客戶界面組件,提供呈現(xiàn)層成為一個(gè)信息系統(tǒng)。
          這些由 portlet 產(chǎn)生的內(nèi)容也被稱為片段 (fragment),而片段是具有一些規(guī)則的Markup( HTML、XHTML、WML ),而且可以和其他的片段組合而成一個(gè)復(fù)雜的文件。而 Portlet 中的內(nèi)容正常來說是與其他 Portlet 的內(nèi)容聚合而成為一個(gè) Portal 網(wǎng)頁(yè)。而 Portlet 的生命周期是被 Portlet Container 所管理控制的。
          ?
          Portlet Container:
          ??? portlet container 是提供 portlets 執(zhí)行的環(huán)境,包含了許多 portlets 并且管理他們的生命周期,他也會(huì)永遠(yuǎn)保存著 portlets 的喜好設(shè)置,一個(gè) portlet container 接收到來自 portal 的請(qǐng)求后,接著將這個(gè)請(qǐng)求傳遞給存在 container 的 portlet 執(zhí)行。portlet container 沒有義務(wù)去組合 portlets 產(chǎn)生的信息內(nèi)容,這個(gè)工作必須由 portal 來處理。portal 和 portlet container 可以放在一起視為同一個(gè)系統(tǒng)的組件,或者分開成為兩個(gè)獨(dú)立的組件。
          ?
          ??? 當(dāng)用戶請(qǐng)求一個(gè)portlet的時(shí)候,portlet container 接收 portlet產(chǎn)生的內(nèi)容。通常 portlet container 將這些內(nèi)容提交給 portal server,portal server 從這些內(nèi)容建立 portal page 然后將它傳給客戶端。相關(guān)的介紹請(qǐng)大家參看JSR168 spec.

          Spring Portlet MVC:

          1. Portlet不能夠像Spring一樣直接經(jīng)由HttpServletRequest指向相對(duì)路徑(如:action="/SpringDuty/sign.jsp")將頁(yè)面表單信息傳給指定頁(yè)面或者Controller,而是用另一種寫法經(jīng)由指定的Action轉(zhuǎn)向(如:action"<portlet:actionURL> <portlet:param name='action' value='doIt'/></portlet:actionURL>");
          ?
          2.?Portlet有自己定義的Request,文中使用到了兩種:ActionRequest*、*RenderRequest。
          ? ActionRequest:它的作用與HttpServletRequest相同,將當(dāng)前表單對(duì)象傳給轉(zhuǎn)向?qū)ο蟆?
          ? RenderRequest:在門戶系統(tǒng)中,Portlet之間的共享信息是放在RenderRequest中,這樣可以在單點(diǎn)登陸后每個(gè)Portlet即可在相應(yīng)權(quán)限下獲取所需的信息(如用戶信息)
          ??? ActionRequest的獲取很簡(jiǎn)單,不做贅述。如何獲得RenderRequest呢?為了獲得RenderRequest,可以首先讓Portlet經(jīng)由一個(gè)自己做的DispatcherController通過protected ModelAndView handleRenderRequestInternal(RenderRequest arg0, RenderResponse arg1)方法來返回一個(gè)ModelAndView,其中ModelAndView返回一個(gè)Map對(duì)象,Map中放入RenderRequest對(duì)象arg0和RenderResponse對(duì)象arg1,View是需要呈現(xiàn)的首頁(yè),這樣,首頁(yè)就能獲取RenderRequest了。

          3. Portlet和Spring一樣,也有自己的轉(zhuǎn)發(fā)器org.springframework.web.portlet.DispatcherPortlet,它負(fù)責(zé)將獲得的Action轉(zhuǎn)發(fā)給相應(yīng)處理。portlet根據(jù)自己的轉(zhuǎn)發(fā)器和當(dāng)前Portlet的狀態(tài)決定跳轉(zhuǎn)到哪個(gè)頁(yè)面,大致流程如下:
          ? portlet根據(jù)配置信息,首先找到View或者經(jīng)由Controller跳轉(zhuǎn)到View;
          ? 當(dāng)進(jìn)行相應(yīng)動(dòng)作時(shí),portlet根據(jù)當(dāng)前的狀態(tài)(view,edit,help)跳轉(zhuǎn)到相應(yīng)View或者Controller;
          ? 其它過程與Spring類似.

          簡(jiǎn)單介紹了Portlet的一些概念后,現(xiàn)在開始Spring Portlet MVC開發(fā)介紹吧。


          ???????????????????????????????????????????????????????To Be Continued...
          posted on 2008-01-03 17:34 小立飛刀 閱讀(5961) 評(píng)論(2)  編輯  收藏 所屬分類: Portal

          FeedBack:
          # re: 應(yīng)用Spring Portlet MVC開發(fā)自己的Portlet(1)
          2008-04-02 21:19 | 踏著夕陽(yáng)歸去
          學(xué)習(xí)了,呵呵,請(qǐng)問能不能給個(gè)例子。  回復(fù)  更多評(píng)論
            
          # re: 應(yīng)用Spring Portlet MVC開發(fā)自己的Portlet(1)[未登錄]
          2008-06-26 09:49 | xuan
          現(xiàn)在我們公司也在讓學(xué)習(xí)portlet,期待有例子貼出,期待……  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          生存或毀滅,這是個(gè)必答之問題:是否應(yīng)默默的忍受坎苛命運(yùn)之無情打擊,還是應(yīng)與深如大海之無涯苦難奮然為敵,并將其克服。此二抉擇,究竟是哪個(gè)較崇高?

          常用鏈接

          留言簿(12)

          隨筆分類(43)

          相冊(cè)

          收藏夾(7)

          朋友的博客

          電子資料

          搜索

          •  

          積分與排名

          • 積分 - 303114
          • 排名 - 193

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 锦屏县| 永福县| 宜章县| 邢台县| 彭州市| 洪江市| 盖州市| 聊城市| 台东市| 宁乡县| 遵义市| 恭城| 固安县| 安乡县| 桃源县| 天镇县| 阜平县| 萨嘎县| 芷江| 晴隆县| 上饶县| 平原县| 威宁| 华蓥市| 扶沟县| 乐亭县| 揭西县| 芮城县| 浮梁县| 邢台市| 沈丘县| 乌审旗| 潜江市| 夏津县| 大英县| 察隅县| 萨嘎县| 合水县| 乐山市| 梓潼县| 金门县|