溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

發(fā)布時間:2020-07-11 22:39:06 來源:網(wǎng)絡(luò) 閱讀:885 作者:鄭文平Portal 欄目:軟件技術(shù)

1  百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

“常用Portlet”指的是,在我做過的超過50家的企業(yè)門戶實施中,幾乎每個客戶都要求開發(fā)的幾個Portlet。這些Portlet有的是公共信息,有的是工具箱,有的是車次查詢,有的是天氣預(yù)報,總之是用戶在日常辦公生活中最常使用的一些小功能。它們本身涉及的開發(fā)量不大,但卻依賴于Portal開發(fā)的一些技巧。

讀者掌握了這些Portlet的開發(fā),一是為本的學(xué)習(xí)嘗試實踐,二是你在接手一個Portal項目時,可以直接拿這些Portlet來用。依據(jù)我的經(jīng)驗,這些Portlet都是大眾客戶所喜歡和需要的,所以本節(jié)的題目又叫“百寶箱”。

1.1  開發(fā)公共信息相關(guān)的Portlet

1.1.1  要旨

Portal系統(tǒng)在用戶不登錄的前提下,就是一個展現(xiàn)公共信息的網(wǎng)站,唯一不同的是,這個網(wǎng)站的內(nèi)容是以組件的形式構(gòu)成的。用專業(yè)術(shù)語來說,就是整個Portal網(wǎng)站是由無數(shù)個Portlet組成的,每個Portlet是一個方面的內(nèi)容。在現(xiàn)實的開發(fā)中,由于已經(jīng)將自己的公共信息數(shù)據(jù)化,所以我們只要從數(shù)據(jù)庫中提取這些信息就可以了。下面舉了一些例子,這些例子都是在企業(yè)門戶系統(tǒng)開發(fā)中經(jīng)常碰到的。

這是IT應(yīng)用的一個例子,如圖1-1所示。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1-1  開發(fā)常用的Portelt(一)

這是“×××”的幾個小例子,如圖1-2所示。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1-2  開發(fā)常用的Portelt(二)

要提取這些公共信息,通常有兩種方法。

— 編寫Portlet,在Portlet的數(shù)據(jù)部分直接讀取后臺數(shù)據(jù)庫。這樣做比較獨立,且風(fēng)格統(tǒng)一,但是會帶來巨大的系統(tǒng)開銷,所以不建議使用。

— 編寫讀取公共信息的頁面,該頁面可以運行在具體的應(yīng)用服務(wù)器上,如WebSphere、WebLogic、Tomcat等。我們只要編寫一個Portlet,在Portlet中嵌入一個Iframe,用來顯示這個頁面就可以了。

本節(jié)主要針對第二種方法來討論公共信息Portlet的開發(fā)方法。本節(jié)按照開發(fā)的步驟一步步介紹,沒有主次之分。

1.1.2  開發(fā)步驟

1.新建地址列表的屬性文件

JspURL.properties的內(nèi)容是結(jié)構(gòu)化數(shù)據(jù),用來存儲各新聞頁面的URL。例如:

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

2.在Portlet數(shù)據(jù)層讀取屬性文件

GetUrl用于從JspURL.properties屬性文件中讀取各個新聞頁面所在的URL。該類的大致內(nèi)容如下:

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

我們在View頁面中嵌入一個Iframe并指定它的URL屬性為從這個類中讀到的地址。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

OK,這個公共信息的Portlet就算開發(fā)完成了,我們把它打包并發(fā)布到Portal門戶系統(tǒng),完成權(quán)限分配,就可以定制并顯示在你的門戶網(wǎng)站了。

1.2  開發(fā)一個工具箱Portlet

車次查詢、天氣預(yù)報等公共小工具,是當(dāng)前門戶網(wǎng)站中比較受歡迎的小組件。這里我們以在Portlet頁面上放置三個小圖標,點擊時分別進入列車車次查詢、航班信息和計算器為例,簡單介紹它們的開發(fā)方法:

開發(fā)這個Portlet請遵循以下步驟進行操作。

1.2.1  使用表格引入圖片

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1.2.2  在圖片上繪制熱點用作鏈接

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1.2.3  對鏈接給出事件處理

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

例如,我們可以對“天氣預(yù)報”做如下處理。

通過天氣預(yù)報Portlet可以查看到公司下屬單位所在地市以及全國幾個主要城市的當(dāng)天天氣情況,如圖1-3所示。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1-3  開發(fā)天氣預(yù)報的Portlet

擊右側(cè)的百寶箱:幾乎所有項目都會用到的Portlet開發(fā)按鈕進入編輯頁面,如圖1-3a所示,這個Portlet允許每個用戶設(shè)置預(yù)報地點。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1-3a  天氣預(yù)報Portlet允許每個用戶設(shè)置預(yù)報地點

OK,這個PortletView部分就算處理完成了,至于ModelController部分,可以添加這些事件的處理方法,用來讀取實際數(shù)據(jù)。比如,從指定的URL處讀取天氣預(yù)報信息,并存儲到一個對象里,寫入Session,然后在View里面顯示出來。

1.3  開發(fā)個人日程的Portlet

1.3.1  開發(fā)要旨

匿名用戶打開Portal頁面時看到的是一個日歷,Portal用戶登錄后,多出一個“添加日程/日程管理”按鈕,用戶可以在這里添加、管理自己的日程。

1.3.2  數(shù)據(jù)庫設(shè)計

個人日程管理字段比較簡單,數(shù)據(jù)并發(fā)處理很少,對數(shù)據(jù)庫要求不高,所以我們選用Access。具體的字段設(shè)置不再贅述。

1.3.3  業(yè)務(wù)流程設(shè)計

Portlet首先試圖獲取用戶id,如果id為空,則說明用戶未登錄,此時顯示一個日歷;如果id非空,則顯示個人日程。Portlet會從數(shù)據(jù)庫中檢索此用戶id的日程條目,然后將有日程的日期變?yōu)榧t色,用戶點擊該日期時彈出此日程條目。在日程條目上,用戶可以編輯自己的日程;用戶添加日程時,以Portal取得的用戶id為主鍵,加入數(shù)據(jù)庫。

具體的業(yè)務(wù)流程如下。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā) 通過個人日程的Portlet可以了解當(dāng)前日期及日程安排,如圖1-4所示。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1-4  個人日程的Portlet允許每個人定義自己的備忘錄

通過調(diào)整年、月可以看到相應(yīng)的日期。如果該日期有日程安排活動,則會顯示不同的顏色,點擊該日期就可以看到日程安排情況,如圖1-5所示。

單擊“新建日程”,會出現(xiàn)如圖1-6所示的界面,可以添加自己的個人日程。


百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1-5  有消息提醒的日期會在個人日程上以不同的顏色顯示

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1-6  可以添加自己的個人日程


用戶可以添加日程安排,包括日程標題、起始/結(jié)束時間、提醒設(shè)置、日程內(nèi)容等。

其中的起始/結(jié)束時間都可以精確到分鐘?!疤嵝言O(shè)置”中的“循環(huán)提醒”用于設(shè)置該信息是以天還是周、月、年等進行循環(huán)來顯示;“開始時間前x分鐘彈出提醒”是根據(jù)用戶的設(shè)置,在該日程開始前多長時間給用戶提醒;“短信提醒”則是通過短信的方式來提醒用戶(目前因為短信平臺還沒有建成,所以此功能暫時不能使用)。當(dāng)設(shè)置完成并保存后,安排日程的日期就會變成淺藍色,且會在“今日提醒”中顯示出來。

日程提醒有三種方式:一是以列表顯示;二是滾動提醒,在“我的工作”頁面的“今日提醒”模塊中進行滾動提醒;三是彈出窗口提醒,在“開始前x分鐘彈出提醒”設(shè)定的時間點(服務(wù)器時間),在“我的工作”頁面中彈出窗口進行提醒。

1.3.4  代碼實現(xiàn)

1.顯示頁面

這里只顯示比較重要的部分。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

2.顯示日程條目

用戶點擊有日程提示的日期時,會彈出該日程。

具體編碼略,我采用的顯示格式如下。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

3.增加日程

單擊“增加日程”,可以為登錄用戶添加日程。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

4.修改日程

在顯示的日程條目上,單擊“編輯日程”,可以修改此日程條目。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

1.3.5  界面美化

為了使日程顯示界面清晰、美觀,還需要進一步美化,美化的過程本書不再介紹。

1.4  開發(fā)一個Excel文件轉(zhuǎn)txt的工具Portlet

這個工具Portlet的用途是,很多時候應(yīng)用系統(tǒng)的一些數(shù)據(jù)存儲在Excel表格里,我們需要導(dǎo)出這些數(shù)據(jù),例如:用戶與用戶組信息。

1.4.1  使用說明

1)本工具使用了jxl.jar包,所以請先將此包加入到Porltet類庫。當(dāng)然,你也可以直接在Tomcat中調(diào)試,那么目標容器是Tomcat,則需要將此文件手工復(fù)制到Tomcat的類庫文件夾里。

2)將主文件 reansfer.jsp復(fù)制到容器目錄下,在瀏覽器里直接訪問該頁面,程序即執(zhí)行。

3)在默認情況下,需要將源文件*.xls復(fù)制到C:\下,生成的文件名稱為:qas_1.txt。

4)如果需要批量轉(zhuǎn)換,或者需要自己選擇文件、文件夾,則請自行修改代碼。

1.4.2  代碼詳解

要開發(fā)這個Portlet,首先需要到網(wǎng)上下載一個Excel轉(zhuǎn)txt的控件,然后新建一個Portlet,在Portlet的顯示層(PortletView.jsp文件)里控制邏輯。

 

下面是該文件的部分源代碼,僅供參考。

百寶箱:幾乎所有項目都會用到的Portlet開發(fā)

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI