portal開發與配置技巧集錦(一)
1.1如何為自己留下進入管理介面的後門
1.1.1 問題描述
在主題與面板開發的過程中,不小心刪除了“管理”連結,無法再進入到Portal管理介面。這個問題其實挺嚴重的,如果不進入Portal管理介面,就無法解除安裝已經安裝的主題與面板,開發工作就無法進行下去。
1.1.2 解決方案
有兩種方法解決這個問題。
第一種方法:為自己留一個後門。執行方法就是上一節提到的建立URL對映的方式,也就是說,新建一個admin的URL對映,然後將admin的URL對映到Portal管理介面,這樣萬一損壞了“管理”連結,則可以在登入系統後直接在位址列輸入:http://hostname:10040/wps/ myportal/admin
第二種方法:這種方法其實很簡單,就是多開啟幾個頁面,其中一個停留在Portal管理介面,而且要保證這個頁面的會話資料是有效的(即:Session不要過期)。除錯主題效果時使用其他頁面,這樣萬一主題損壞,則可以立即切換到Portal管理介面,刪除剛剛新增的、損壞的主題。
1.2 獲取登入使用者資訊
1.2.1 問題描述
獲得登入使用者物件,並取出使用者名稱、註冊郵箱等使用者資訊,在主題與面板開發以及Portlet開發中都經常會用到。如何取出使用者資訊?我們通過配置
1.2.2 解決方案
第一種方法:標籤+程式碼方式。
首先修改IBM/WebSphere/wp_profile/installedApps/[cellname]/wps.ear/wps.war/themes/html/ ThemeName目錄下的Default.jsp檔案:
將<%@ page session="false" buffer="none" %>改成<%@ page session="true" %>。
然後匯入IBM User的JAR包,這個包的名字是wp.user.api.jar,可以在IBM/WebSphere/Portal Server/base/wp.user.api/shared/app
<%@ page import="com.ibm.wps.puma.User" %>
加入如下程式碼:
<%
HttpSession mysession=request.getSession();
String loginname="";
if(mysession.getAttribute("com.ibm.wps.util.session_user")!=null){
com.ibm.wps.puma.User myuser=(com.ibm.wps.puma.User)mysession.getAttribute ("com.ibm.wps.util.session_user");
loginname=myuser.getFullName();
}
%>
第二種方法:在Default.jsp裡直接引入使用者類包,並在主題裡初始化。
參考程式碼如下:
<%@ page import ="com.ibm.portal.portlet.service.PortletServiceHome" %>
<%@ page import ="com.ibm.portal.portlet.service.PortletServiceUnavailable Exception" %>
<%@ page import ="com.ibm.portal.puma.User" %>
<%@ page import ="com.ibm.portal.um.PumaHome" %>
<%@ page import ="com.ibm.portal.um.PumaProfile" %>
<%@ page import ="com.ibm.portal.um.exceptions.PumaException" %>
<%
PumaHome home = null;
Context ctx = new InitialContext();
PortletServiceHome serviceHome = (PortletServiceHome)ctx.lookup("portlet service/com.ibm.portal.um.portletservice.PumaHome");
home = (PumaHome)serviceHome.getPortletService(PumaHome.class);
PumaHome pumaHome = home;
PumaProfile pumaProfile = pumaHome.getProfile();
String currentUserName = null;
User currentUser = (User)pumaProfile.getCurrentUser();
currentUserName = currentUser.getName();
out.print(currentUserName );
%>
1.3 個性化Portlet新增控制板
1.3.1 問題描述
在正常情況下,我們會按照如下的方法使用Portlet新增班來工作。
以wpsadmin身份登入Portal 6.1系統,單擊頁面右上角的“展開選用板”按鈕,如圖1-10所示。
圖1-10 單擊“展開選用板”按鈕
可以看到Portlet選用板被成功初始化,如圖1-11所示,這就是傳說中的Portlet選用板。
圖1-11 傳說中的Portlet選用板
通過將選用板上的Portlet拖曳到左側頁面,可以直接將Portlet定製到頁面,並分配給有相關許可權的使用者使用,如圖1-12所示。
圖1-12 可以直接將Portlet定製到頁面
單擊Portlet列表中分類選項條目的右側,可以查閱該分類下的所有Portlet,如圖1-13所示。
這時候就有人可能提出問題:這些分類都是預設的,難以識別,能不能按照我的類別分類,並且將我希望提供給使用者的Portlet新增到相應的類別裡?
回答是肯定的。以下是解決方法
圖1-13 Portlet的分類
1.3.2 解決方案
單擊“Portlet”選項右側的三角形按鈕,選擇“配置”,如圖1-14所示。
圖1-14 選擇“配置”
單擊各個類別右側的三角形按鈕,選擇“刪除類別”,這個類別就被刪除了,如圖1-15所示。
選擇“重新命名類別”,還可以給這個類別改名稱。
圖1-15 可以刪除不想要的類別
單擊“配置”右側的三角形按鈕,選擇“建立新類別”,就可以建立新的類別了,如圖1-16所示。
圖1-16 可以建立自己真正需要的類別
單擊建立好的新類別右側的三角形按鈕,選擇“新增Portlet”,就能為這個類別分配屬於它的Portlet,如圖1-17所示。
圖1-17 往新建立的類別裡新增Portlet
如果你的類別被弄得一塌糊塗,則可以選擇配置右側的三角形按鈕,選擇“復位成預設值”,那麼你所個性化的所有類別都將被刪除,系統會恢復成剛剛完成安裝時的預設狀態,如圖1-18所示。
圖1-18 選擇“復位成預設值”
這裡的介紹比較簡單,還有很多其他的用法,你都可以試試。