LifeRay培訓講義2-LifeRayPortlet插件_第1頁
LifeRay培訓講義2-LifeRayPortlet插件_第2頁
LifeRay培訓講義2-LifeRayPortlet插件_第3頁
LifeRay培訓講義2-LifeRayPortlet插件_第4頁
LifeRay培訓講義2-LifeRayPortlet插件_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、中科信軟培訓中科信軟培訓 -開發(fā)PORTLET插件Portlet和和Web Application Frameworks比較比較MVC Portlets 設(shè)計 Service Builder MVC Portlet 框架 Portlet Actions Feedback, Validation, Localization Portlet Permissions Control Panel Portlets 開發(fā)一個MVC Portlet中科信軟培訓中科信軟培訓 -開發(fā)的基本概念開發(fā)PORTLET插件-框架介紹和對比中科信軟培訓

2、中科信軟培訓 -框架介紹和對比什么是PortletPortlet和Servlet對比相似之處不同之處Portlet獨特的功能Serlet獨特的功能Portlet和WebFramworkPortlet的生命周期中科信軟培訓中科信軟培訓 -什么是PORTLETPortlet是Portal中最重要的 組件,負責在Portal中呈現(xiàn)信息內(nèi)容,有相應(yīng)的生命周期。通過自定義Portlet,用戶很容易定義個性化的Portal頁面。Portlet由 Portlet容器負責管理、處理請求并返回動態(tài)頁面,可以作為Portal的可即插即用的界面組件

3、。中科信軟培訓中科信軟培訓 -什么是PORTLET一個Portlet是以Java技術(shù)為技術(shù)的Web組件,由Portlet容器所管理,專門處理客戶的 信息請求以及產(chǎn)生各種動態(tài)的信息內(nèi)容。Portlet 為可插式的客戶界面組件,提供呈現(xiàn)層成為一個信息系統(tǒng)。這 些由Portlet產(chǎn)生的內(nèi)容也被稱為片段,而片段是具有一些規(guī)則的標記( HTML、XHTML、WML ),而且可以和其他的片段組合而成一個復雜的文件。一個或多個 Portlet 的內(nèi)容聚合而成為一個 Portal 網(wǎng)頁。而 Portlet 的生命周期是被 Portlet 容器所管理控制的??蛻舳撕蚉ortle

4、t的互動是由Portal通過典型的請求/響應(yīng)方式實現(xiàn),正常來說,客 戶會和Portlet所產(chǎn)生的內(nèi)容互動,舉例來說,根據(jù)下一步的連接或者是確認送出的表單,結(jié)果 Portal將會接收到Portlet的動作,將這個處理狀況轉(zhuǎn)向到目標Portlet。這些Portlet 內(nèi)容的產(chǎn)生可能會因為不同的使用者而有不同的變化,完全是根據(jù)客戶對于這個Portlet的設(shè)置。中科信軟培訓中科信軟培訓 -PORTLET和SERVLET對比Portlet 被定義成為一個新的組件,具有新的明確的界面與行為。為了盡可能與現(xiàn)有的 Servlet 結(jié)合達到重復使用的目的,Portlet 的規(guī)范

5、利用了 Servlet 的規(guī)范,許多觀念都很相似的,結(jié)合 Portlet、Servlet 及 Jsp 在同一個網(wǎng)站系統(tǒng)中,我們稱為Portlet 應(yīng)用 。在同一個 Portlet 應(yīng)用 中,他們將分享同一個類加載器(ClassLoader),上下文(Context) 及 Session。 中科信軟培訓中科信軟培訓 -PORTLET 和 SERVLET 的相似之處Portlet 也是 Java 技術(shù)的 web 組件Portlet 也是有特定的 container 在管理Portlet 可以動態(tài)產(chǎn)生各種內(nèi)容Portlet 的生命周期由 container 所管理P

6、ortlet 和客戶端的互動是通過 request/response 的機制 中科信軟培訓中科信軟培訓 -PORTLET 和 SERVLET 也有一些不同Portlet 只產(chǎn)生 markup 信息片段,不是完整的網(wǎng)頁文件。而 Portal 會將所有的 Portlet markup 信息片段放到一個完整的 Portal 網(wǎng)頁。Portlet 不會和 URL 有直接的關(guān)系 客戶端必須通過 portal 系統(tǒng)才能和 Portlet 互動Portlet 有一些定義好的 request 處理,action request 以及 render request。Portle

7、t 默認定義 Portlet modes 及窗口狀態(tài)可以指出在網(wǎng)頁中該 Portlet 的哪個功能正在執(zhí)行及現(xiàn)在的 狀態(tài)。Portlet 可以在同一個 portal 網(wǎng)頁之中存在多個。 中科信軟培訓中科信軟培訓 -PORTLET 有一些附加的功能是 SERVLET 所沒有的Portlet 能夠存取及儲存永久配置文件及定制資料Portlet 可以存取使用者數(shù)據(jù) Portlet 具有 URL 的重寫功能在文件中去動態(tài)建立連結(jié),允許 portal server 不用去知道如何在網(wǎng)頁的片 段之中建立連結(jié)及動作。Portlet 可以儲存臨時性的數(shù)據(jù)在 Portlet s

8、ession 之中,擁有兩個不同的范圍 :application-wide scope 及 Portlet private scope 。中科信軟培訓中科信軟培訓 -PORTLET 不具有一些功能, 但是 SERVLET 卻有提供Servlet 具有設(shè)置輸出的文字編碼( character set encoding)方式Servlet可以設(shè)置 HTTP 輸出的 headerServlet才能夠接收客戶對于 portal 發(fā)出的 URL 請求中科信軟培訓中科信軟培訓 -PORTLET和WEBFRAMWORKStruts/JSFS

9、truts/JSF基于Servlet實現(xiàn)Struts/JSF在Portlet中可以使用開放給開發(fā)者的Struts/JSF的API還是一樣的Struts/JSF開發(fā)者必須基于Portlet的規(guī)則進行開發(fā)中科信軟培訓中科信軟培訓 -PORTLET和WEBFRAMWORKSpring框架Spring可以用在任何兼容JSR-168的Portlet框架中提供了基于接口開發(fā)的最佳實踐和依賴注入支持各種視圖層的技術(shù),如jsp、Velocity和FreeMarker它支持的行動階段,并呈現(xiàn)階段的 portlet 的請求 ,對開發(fā)人員是透明的。Spring提供了所有應(yīng)用層次的支

10、持中科信軟培訓中科信軟培訓 -PORTLET生命周期一個 Portlet 有著良好的生命周期管理,定義了怎樣裝載,實例化和初始化,怎樣響應(yīng)來自客戶端的請求及怎樣送出服務(wù)。這個 Portlet 生命周期由 Portlet接口的 init,processAction,render 和 destroy 方法來表達。中科信軟培訓中科信軟培訓 -PORTLET生命周期中科信軟培訓中科信軟培訓 -PORTLET生命周期載入和實例化:Portlet 容器負責載入和實例化 Portlet。當 Portlet

11、容器運行Portlet 應(yīng)用或者延遲到 Portlet 需要服務(wù)使用者的請求時,Portlet 就會被載入并實例化。載入 Portlet 類后,Portlet 類隨即被實例化。中科信軟培訓中科信軟培訓 -PORTLET生命周期初始化:Portlet 類實例化后,Portlet 容器還需要初始化 Portlet。以調(diào)用Portlet 去響應(yīng)客戶端的請求。 Portlet 容器呼叫 ortlet 接口中的 init 方法初始化 Portlet。擴展自 PortletConfig 的類可以取出定義在部署描述文件中的初始化參數(shù),以及 Resource Bundle。中

12、科信軟培訓中科信軟培訓 -PORTLET生命周期初始化異常:在 Portlet 初始化期間,Portlet 可能會丟出UnavailableException 或 PortletException 異常。此時,Portlet 容器不能把 Portlet 置入已啟動的服務(wù),并且 Portlet 容器必需釋放這個 Portlet。destory 方法不能被呼叫,因為初始化被認為執(zhí)行失敗。發(fā)生 失敗后, Portlet 容器會嘗試著重新實例化及初始化 Portlet。這個異常處理的規(guī)則是:由一個UnavailableException 指定一個不能執(zhí)行的最小時間,當

13、此異常發(fā)生時,Portlet 容器必需等到指定時間過去后才產(chǎn)生并且初始化一個新的 Portlet。在初始化過程中所丟出的 Runtime Exception 異常,被當作 PortletException 來處理。中科信軟培訓中科信軟培訓 -PORTLET生命周期開發(fā)PORTLET插件-PORTLET的基本APIJAVA PORTLET APIjavax.portlet.Portletjavax.portlet.GenericPortletjavax.portlet.ActionRequestjavax.portlet.ActionResponsejavax.

14、portlet.RenderRequestjavax.portlet.RenderResponsePORTLET LIFE CYCLEHandlerequestsDestroyedby containerInitializedbycontainerinit()Notifies initialization ofportlet by cessAction()processAction() notifies thePortlet about users requestrender()render() notifies the Portletto generate the

15、markupfragmentfor action.destroy()destroy() notifies thedestruction of portlet bycontainer. Should free upresources in this method.Portlet Interface1 public interface Portlet 2345678public void init(PortletConfig config) throws PortletException;/ Action Request: Invoked only when the URL is an actio

16、n targeted/ to the portlet, it does not produce outputpublic void processAction(ActionRequest request,ActionResponse response)throws PortletException, IOException;9 / Render Request: Invoked on every request to the portal, it10 / produces output to create the portal page11 public void render(RenderR

17、equest request,1213RenderResponse response)throws PortletException, IOException;14 public void destroy();15 GENERICPORTLET CLASSImplements Portlet interfaceRender()-like service() in servlets, callsspecified render methods based on PortletmodedoView() for View modedoEdit()for Edit modedoHelp() for H

18、elp modeIs extended by portlet developersOverride render methods as necessaryJAVAX.PORTLET.GENERICPORTLETprotected void doView(.)protected void doEdit(.)protected void doHelp(.)protected void processAction(.)DoView()doView()doEdit()doHelp()HTMLPortletRender()DoEdit()Edit FormPortletRender()doView()d

19、oEdit()doHelp()HTMLPortletcontainerProcessAction()processAction()store()doView()OTHER INTERFACES/CLASSESPortletConfig, PortletContext,PortletSessionPortletPreferences interfaceWindowState (MINIMIZED,NORMAL & MAXIMIZED)PortletMode (VIEW, EDIT & HELP)PortletURLPortletRequestDispatcherPortlet T

20、ag LibraryPORTLETPREFERENCESPersistent read/write Portlet configurationgetValues(), setValues() to accessPortletPreferencesMay modify attributes and store() in persistenceduring processAction()Normally, portlet preferences are per portlet/peruserPersistency is managed by the portlet-containerDefault

21、 values are defined in the portlet.xmldeployment descriptor中科信軟培訓中科信軟培訓 -PORTLET的對象JSR168 給給 Portal 定義了幾個特別的對象,用來操作定義了幾個特別的對象,用來操作 Portal 特有特有的信息。這些對象的信息。這些對象跟跟Servlet 的對象有點類似,的對象有點類似, 又有點不同。這些又有點不同。這些對象都封裝對象都封裝在在$CATALINA_HOME/common/lib/ext/portlet.jar 包中,具體支持實現(xiàn)要視包中,具體支持實現(xiàn)要視 Porta

22、l 服務(wù)器而服務(wù)器而定。定。中科信軟培訓中科信軟培訓 -PORTLET的對象 Request 對象對象Portlet 中的 Request 與 Servlet 的 Request 一樣接受客戶端發(fā)送的請求,但是與Servlet 不同,Portlet 的 Request 分為 Action Request 及 Render Request 兩種類型,因此 Portlet 接 口 中 定 義 了 兩 種 方 法 用 來 處 理 不 同 的 Request 。分別是processAction(ActionRequest request , ActionRespons

23、e response) 和 render(RenderRequest request, RenderResponse response),分別用以處理 Action Request 和 Render Request。某種意義上來講, render 方法類似 Servlet 中的 service 方法, doView,doEdit,doHelp 方法又類似 doGet,doPost 方法。中科信軟培訓中科信軟培訓 -PORTLET的對象RenderRequest 和和 ActionRequestPortletRequest 分為 RenderRequest 和

24、ActionRequest 兩 種 , 分 別 由renderURL 和 actionURL 來觸發(fā)。renderURL 是 actionURL 的一種優(yōu)化。Portlet 的開發(fā)過程中盡量使用 renderURL 而避免 actionURL。actionURL 適用于有確實的 Action(行為)的情況下。比如說,表單 form 提交后 Persistent 狀態(tài)的改變、session 的改變、perference 的修改等等。renderURL 通常用來處理 Portlet 的導航。中科信軟培訓中科信軟培訓 -PORTLET的對象舉個例子:使用 actio

25、nURL:使用RenderURL:1. % 2. PortletURL pu = renderResponse.createActionURL(); 3. pu.setParameter(ACTION,LOGIN); 4. form name=usrform method=post action= 5. %1. % 2. PortletURL pu=renderResponse.createRenderURL(); 中科信軟培訓中科信軟培訓 -PORTLET的對象 Response 對象對象與 Request 對象一樣, Response 對象也有兩種: Re

26、nderResponse 和 ActionResponse,分別用來封裝對應(yīng)的 RenderRequest 和 ActionRequest 的返回信息,比如重定向、窗口狀態(tài)、 Portlet 模式等。他們兩者的父類 PortletResponse 擁有 serPorperty 和 getPorperty 兩個方法,用來遞信息給 Portal 容器。中科信軟培訓中科信軟培訓 -PORTLET對象ActionResponse 主要用來處理以下功能主要用來處理以下功能:a) 重定向b) 改變窗口狀態(tài)、Portlet 模式c) 傳遞 parameter 參數(shù)到 Ren

27、derRequest 中去 RenderResponse 主要用來提供以下功能:d) 設(shè)置 ContentTypee) 得到 OutputStream 和 Writer 對象,用來輸出頁面內(nèi)容f) Buffering 緩沖g) 設(shè)定 Portlet 的標題,但是必須在 Portlet 輸出前調(diào)用,否則將被忽略中科信軟培訓中科信軟培訓 -PORTLET對象PortletConfig 對象對象:和 ServletConfig 對象類似, PortletConfig 對象提供對 Portlet 初始化信息以及PortletContext 對象存取的方法。和 Serv

28、letConfig 對象不同的是,PortletConfig 對象提供對 Portlet 的標題等資源的 I18N 支持,可以通過設(shè)定不同的 Resource Bundle 文件以提供多種語言支持。中科信軟培訓中科信軟培訓 -PORTLET的對象Session 對象:對象:由于容器不同,Portal 的 Session 對象與 Servlet 的 Session 對象略有不同。由于Portlet 處于 Portal 服務(wù)器的緣故,Portlet 的 Session 分為 Application Scope 和PortletScope。兩者的區(qū)別在于:a) Ap

29、plication Scope 范圍的 Session 中保存的對象,對于同一個 Portlet 應(yīng)用范圍內(nèi)的所有 Portlet 都是可用的。b) Portlet Scope 范圍的 Session 中保存的對象,只對本 Portlet 可用,其他 Portlet 即使在同一個應(yīng)用中,也不可用。但是對于 Portlet 應(yīng)用來說,可以通過 HttpSession 來訪問。畢竟 Portlet 應(yīng)用也是Web 應(yīng)用。在使用 Session 對象的時候,最好能明確指出使用的是那個 Scope 范圍的 Session。中科信軟培訓中科信軟培訓 -PORTLET的對

30、象Session 對象:對象: 中科信軟培訓中科信軟培訓 -PORTLET的對象Session 對象:對象:PortletSession ps = req.getPortletSession(); if(ps.getAttribute(PortletSession.AS,PortletSession.APPLICATION_SCOPE) != null) app = ps.getAttribute(PortletSession.AS, PortletSession.APPLICATION_SCOPE).toString(); if(ps.getAttribut

31、e(PortletSession.PS, PortletSession.PORTLET_SCOPE) != null) portlet = ps.getAttribute(PortletSession.PS, PortletSession.PORTLET_SCOPE).toString(); 中科信軟培訓中科信軟培訓 -PORTLET的對象Session 對象:對象:PortletSession.APPLICATION_SCOPE范圍下的Session 對象值。 HttpSession se = request.getSession(); if(se.getA

32、ttribute(PortletSession.AS) != null) app = se.getAttribute(PortletSession.AS); HttpSession se = request.getSession();if(se.getAttribute(PortletSession.AS) != null)app = se.getAttribute(PortletSession.AS);中科信軟培訓中科信軟培訓 -PORTLET的對象 Preference 對象對象對象對象:Preference 對象被設(shè)計用來實現(xiàn)用戶的個性化設(shè)置,可以幫助用

33、戶對 Portlet 進行符合用戶需求的顯示定制和行為定制,可以替代部分的數(shù)據(jù)庫功能。需要指出的是, Preference 對象只是用來存取簡單的配置信息,并不能完全替代數(shù)據(jù)庫應(yīng)用。Preference 對象對于配置信息采用鍵-值的形式存取,用戶可以將需要的信息暫時保存在 Preference 中。PortletPreference p = req.getPortletPreferences(); p.setValue(educhina.username, educhina); p.store();中科信軟培訓中科信軟培訓 -PORTLET的對象 Prefer

34、ence 對象對象對象對象:Preference 對象用來存取用戶的個性化信息,所以不同用戶的 Preference 對象不能共享,這點跟 Session 不同??梢栽?Portlet.xml 中配置 Preference 信息educhina.usernameeduchinatrue中科信軟培訓中科信軟培訓 -PORTLET標簽Liferay 的標簽包含的標簽包含: 中科信軟培訓中科信軟培訓 -PORTLET標簽defineObjects 標簽標簽在使用 Portlet 典型標簽之前,要見聲明,這樣才可以使用其他的標簽。de

35、fineObjects 中間不允許定義任何屬性和包含任何內(nèi)容。 中科信軟培訓中科信軟培訓 -PORTLET標簽 renderURL 標簽標簽中科信軟培訓中科信軟培訓 -PORTLET標簽 renderURL 標簽標簽創(chuàng)建一個當前創(chuàng)建一個當前 RenderURL,當訪問它時將使,當訪問它時將使 Portlet 窗口變?yōu)樽畲翱谧優(yōu)樽畲蠡癄顟B(tài),模式大化狀態(tài),模式變?yōu)闉g覽變?yōu)闉g覽。 子元素會在生成的子元素會在生成的 RenderURL 中增加中增加 number、 page 兩個參數(shù)兩個參數(shù)和值和值。1. 2. 3. 4. 中科信軟培

36、訓中科信軟培訓 -PORTLET標簽 actionURL 標簽標簽中科信軟培訓中科信軟培訓 -PORTLET標簽 actionURL 標簽標簽創(chuàng)建一個當前創(chuàng)建一個當前 ActionURL,當訪問它時將使,當訪問它時將使 Portlet 窗口變?yōu)檎翱谧優(yōu)檎顟B(tài),模式變?yōu)槌顟B(tài),模式變?yōu)榫庉嬀庉嫛?子元素會在生成的子元素會在生成的 ActionURL 中增加中增加 action 參數(shù)和值。參數(shù)和值。renderURL 和和 actionURL 兩個標簽在諸如生成兩個標簽在諸如生成 form 表單的表單的 action 等方面特

37、別有用。等方面特別有用。1. 2. 3. 中科信軟培訓中科信軟培訓 -PORTLET標簽 param 標簽標簽用在用在 renderURL 和和 actionURL 標簽內(nèi)部,用來在生成的標簽內(nèi)部,用來在生成的 URL 中增加參數(shù)和值。中增加參數(shù)和值。 param標簽標簽不運行不運行 body 內(nèi)容存在。內(nèi)容存在。中科信軟培訓中科信軟培訓 -PORTLET標簽 namespace 標簽標簽為目前的為目前的 Portlet 產(chǎn)生一個唯一的產(chǎn)生一個唯一的 Value,防止與其他,防止與其他 Portlet 或或者者 Portal

38、上面的上面的 Value 沖突沖突。上述上述標簽的具體屬性及其約束,標簽的具體屬性及其約束, 請參閱請參閱$CATALINA_HOME/liferay/WEB-INF/tld/liferay-portlet.tld中科信軟培訓中科信軟培訓 -JSP中的LIFERAY 對象中科信軟培訓中科信軟培訓 -JSP中的LIFERAY 對象中科信軟培訓中科信軟培訓 -復習簡單的PORTLETPortlet類設(shè)置斷點,了解生命周期中科信軟培訓中科信軟培訓 -MVC Port

39、let中科信軟培訓中科信軟培訓 -MVC PORTLET設(shè)計Service BuilderMVC Portlet 框架Portlet ActionsFeedback, Validation, LocalizationPortlet PermissionsControl Panel Portlets開發(fā)一個MVC Portlet中科信軟培訓中科信軟培訓 -設(shè)計中科信軟培訓中科信軟培訓 -設(shè)計中科信軟培訓中科信軟培訓 -設(shè)計中科信軟培訓中科信軟培訓 www.inf

40、-設(shè)計中科信軟培訓中科信軟培訓 -設(shè)計中科信軟培訓中科信軟培訓 -設(shè)計實踐新建工程中科信軟培訓中科信軟培訓 -SERVICE BUILDERService Builder是是Liferay IDE(SDK)提供的提供的一種代碼生成方案,開發(fā)人員只需要編輯一一種代碼生成方案,開發(fā)人員只需要編輯一個數(shù)據(jù)庫的實體描述文件,即可根據(jù)本個數(shù)據(jù)庫的實體描述文件,即可根據(jù)本XML文件生成文件生成Spring層代碼、層代碼、 Hibernate層代碼、層代碼、SQL、SQL索引創(chuàng)建文件、索

41、引創(chuàng)建文件、Spring和和hibernate的配置文件等,可以大提高開發(fā)人的配置文件等,可以大提高開發(fā)人員的效率。簡單說就是根據(jù)數(shù)據(jù)員的效率。簡單說就是根據(jù)數(shù)據(jù) 庫描述文件,庫描述文件,生成生成service層和持久化層的代碼,開發(fā)人員層和持久化層的代碼,開發(fā)人員只需要關(guān)注控制層即可。只需要關(guān)注控制層即可。中科信軟培訓中科信軟培訓 -SERVICE BUILDERService Builder在在Portal中的位置中的位置中科信軟培訓中科信軟培訓 -SERVICE BUILDER根據(jù)Xml描述文件,使用ServiceBuilder可以產(chǎn)生如下信息:Java BeansSQL scripts for database tables creationHibernate ConfgurationSpring ConfgurationAxis Web ServicesJSON JavaScript Interface中科信軟培訓中科信軟培訓 -SERVICE BUILDER中科信軟培訓中科信軟培訓 -SERVICE BUILDER填寫全局信息定義一個實體定義其字段定義排序定義查找方法定義關(guān)聯(lián)關(guān)系中科信軟培訓中科信

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論