百寶箱:幾乎所有專案都會用到的Portlet開發

zhengwenping發表於2018-11-23

1    百寶箱:幾乎所有專案都會用到的 Portlet 開發

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

讀者掌握了這些 Portlet 的開發,一是為本文 的學習嘗試實踐,二是你在接手一個 Portal 專案時,可以直接拿這些 Portlet 來用。依據我的經驗,這些 Portlet 都是大眾客戶所喜歡和需要的,所以本文的題目又叫“百寶箱”。

1 .1   開發公共資訊相關的 Portlet

1 .1.1   要旨

Portal 系統在使用者不登入的前提下,就是一個展現公共資訊的網站,唯一不同的是,這個網站的內容是以元件的形式構成的。用專業術語來說,就是整個 Portal 網站是由無數個 Portlet 組成的,每個 Portlet 是一個方面的內容。在現實的開發中,由於已經將自己的公共資訊資料化,所以我們只要從資料庫中提取這些資訊就可以了。下面舉了一些例子,這些例子都是在企業門戶系統開發中經常碰到的。

這是 IT 應用的一個例子,如圖 1-1 所示。

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

這是 “為您服務”的幾個小例子,如圖 1-2 所示。

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

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

—  編寫 Portlet ,在 Portlet 的資料部分直接讀取後臺資料庫。這樣做比較獨立,且風格統一,但是會帶來巨大的系統開銷,所以不建議使用。

—  編寫讀取公共資訊的頁面,該頁面可以執行在具體的應用伺服器上,如 WebSphere WebLogic Tomcat 等。 我們只要編寫一個 Portlet ,在 Portlet 中嵌入一個 Iframe ,用來顯示這個頁面就可以了。

本節主要針對第二種方法來討論公共資訊 Portlet 的開發方法。本節按照開發的步驟一步步介紹,沒有主次之分。

1 .1.2   開發步驟

1 .新建地址列表的屬性檔案

JspURL .properties 的內容是結構化資料,用來儲存各新聞頁面的 URL 。例如:

2 .在 Portlet 資料 層讀取屬性檔案

GetUrl 用於從 JspURL.properties 屬性檔案中讀取各個新聞頁面所在的 URL 。該類的大致內容如下:

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

OK ,這個公共資訊的 Portlet 就算開發完成了,我們把它打包併發布到 Portal 門戶系統,完成許可權分配,就可以定製並顯示在你的入口網站了。

1 .2   開發一個工具箱 Portlet

車次查詢、天氣預報等公共小工具,是當前入口網站中比較受歡迎的小元件。這裡我們以在 Portlet 頁面上放置三個小圖示,點選時分別進入列車車次查詢、航班資訊和計算器為例,簡單介紹它們的開發方法:

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

1 .2.1   使用表格引入圖片

1 .2.2   在圖片上繪製熱點用作連結

1 .2.3   對連結給出事件處理

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

透過天氣預報 Portlet 可以檢視到公司下屬單位所在地市以及全國幾個主要城市的當天天氣情況,如圖 1-3 所示。

1-3    開發天氣預報的 Portlet

擊右側的 按鈕進入編輯頁面,如圖 1-3a 所示,這個 Portlet 允許每個使用者設定預報地點。

1-3a   天氣預報 Portlet 允許每個使用者設定預報地點

OK ,這個 Portlet View 部分就算處理完成了,至於 Model Controller 部分,可以新增這些事件的處理方法,用來讀取實際資料。比如,從指定的 URL 處讀取天氣預報資訊,並儲存到一個物件裡,寫入 Session ,然後在 View 裡面顯示出來。

1 .3   開發個人日程的 Portlet

1 .3.1   開發要旨

匿名使用者開啟 Portal 頁面時看到的是一個日曆, Portal 使用者登入後,多出一個“新增日程 / 日程管理”按鈕,使用者可以在這裡新增、管理自己的日程。

1 .3.2   資料庫設計

個人日程管理欄位比較簡單,資料併發處理很少,對資料庫要求不高,所以我們選用 Access 。具體的欄位設定不再贅述。

1 .3.3   業務流程設計

Portlet 首先試圖獲取使用者 id ,如果 id 為空,則說明使用者未登入,此時顯示一個日曆;如果 id 非空,則顯示個人日程。 Portlet 會從資料庫中檢索此使用者 id 的日程條目,然後將有日程的日期變為紅色,使用者點選該日期時彈出此日程條目。在日程條目上,使用者可以編輯自己的日程;使用者新增日程時,以 Portal 取得的使用者 id 為主鍵,加入資料庫。

具體的業務流程如下。

  透過個人日程的 Portlet 可以瞭解當前日期及日程安排,如圖 1-4 所示。

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

透過調整年、月可以看到相應的日期。如果該日期有日程安排活動,則會顯示不同的顏色,點選該日期就可以看到日程安排情況,如圖 1-5 所示。

單擊 “新建日程”,會出現如圖 1-6 所示的介面,可以新增自己的個人日程。


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

1-6    可以新增自己的個人日程

使用者可以新增日程安排,包括日程標題、起始 / 結束時間、提醒設定、日程內容等。

其中的起始 / 結束時間都可以精確到分鐘。“提醒設定”中的“迴圈提醒”用於設定該資訊是以天還是周、月、年等進行迴圈來顯示;“開始時間前 x 分鐘彈出提醒 ”是根據使用者的設定,在該日程開始前多長時間給使用者提醒;“簡訊提醒”則是透過簡訊的方式來提醒使用者(目前因為簡訊平臺還沒有建成,所以此功能暫時不能使用)。當設定完成並儲存後,安排日程的日期就會變成淺藍色,且會在“今日提醒”中顯示出來。

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

1 .3.4   程式碼實現

1 .顯示頁面

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

2 .顯示日程條目

使用者點選有日程提示的日期時,會彈出該日程。

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

3 .增加日程

單擊 “增加日程”,可以為登入使用者新增日程。

4 .修改日程

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

1 .3.5   介面美化

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

1 .4   開發一個 Excel 檔案轉 txt 的工具 Portlet

這個工具 Portlet 的用途是,很多時候應用系統的一些資料儲存在 Excel 表格裡,我們需要匯出這些資料,例如:使用者與使用者組資訊。

1 .4.1   使用說明

1 )本工具使用了 jxl.jar 包,所以請先將此包加入到 Porltet 類庫。當然,你也可以直接在 Tomcat 中除錯,那麼目標容器是 Tomcat ,則需要將此檔案手工複製到 Tomcat 的類庫資料夾裡。

2 )將主檔案 reansfer.jsp 複製到容器目錄下,在瀏覽器裡直接訪問該頁面,程式即執行。

3 )在預設情況下,需要將原始檔 *.xls 複製到 C:\ 下,生成的檔名稱為: qas_1.txt

4 )如果需要批次轉換,或者需要自己選擇檔案、資料夾,則請自行修改程式碼。

1 .4.2   程式碼詳解

要開發這個 Portlet ,首先需要到網上下載一個 Excel txt 的控制元件,然後新建一個 Portlet ,在 Portlet 的顯示層( PortletView.jsp 檔案)裡控制邏輯。

 

下面是該檔案的部分原始碼,僅供參考。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9116427/viewspace-2221471/,如需轉載,請註明出處,否則將追究法律責任。

相關文章