Bgfbracportal认证笔记.docx
- 文档编号:3231906
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:11
- 大小:24.20KB
Bgfbracportal认证笔记.docx
《Bgfbracportal认证笔记.docx》由会员分享,可在线阅读,更多相关《Bgfbracportal认证笔记.docx(11页珍藏版)》请在冰点文库上搜索。
Bgfbracportal认证笔记
、
.~
1我们‖打〈败〉了敌人。
②我们‖〔把敌人〕打〈败〉了。
Portlet学习笔记
1.Portal基础
:
}0H_l_p_K\0l!
J[
.b_L3x_l_A0@_a1.1.什么是Portal
]_s-e r_d3S&j:
h O
;OiQ2Y_Aportal爱好者 Portal一词是在Internet的发展中提出来的,原意为“门户网站”即是人们上网后想要访问的第一个网站,例如雅虎、搜狐这类网站。
在这个阶段,Portal还是作为一个面向广泛群体的信息平台,把人们所需要的各种信息(或者访问这类信息的途径)聚合在一起,是一个信息集中平台。
很快企业应用中也开始采用Portal这个概念,根据Portal在企业应用中的不同作用,业界对Portal有着不同的定义如企业信息门户、知识门户、专业门户、应用门户等等。
随着时间的推移,业界对Portal的定义趋向一致,也就是在JSR168种对Portal的定义:
y_I_S|_{
portal爱好者
_ H|_p.N_F_Jh
Aportalisawebbasedapplicationthat?
commonly-providespersonalization,singlesignon,contentaggregationfromdifferentsourcesandhoststhepresentationlayerofInformationSystems.Aggregationistheactionofintegratingcontentfromdifferentsourceswithinawebpage.Aportalmayhavesophisticatedpersonalizationfeaturestoprovidecustomizedcontenttousers.Portalpagesmayhavedifferentsetofportletscreatingcontentfordifferentusers.
H
w_`.[$K6c_?
'G_`_T1Z(_1G'r_o_c,l
从上述定义中我们可以知道Portal是企业用户访问各种企业信息、应用的入口,如下图:
_a.D
w8R!
E.G
_A_P_MhG_|
h_P_g_T*q%e#^SV^_Kportal爱好者_o
o"M
].|_T*U
2`_}8q~_A ci9}"P1.2.什么是Portlet
p_R_d.J_]_o8`^$|_~3J
5cz.[;q_o$u_Lyportal爱好者作为企业信息、应用的入口,Portal的每个页面(Page)包含了多种不同的信息,一般来说Portal的显示如下:
_Kw+@_h_l
z9[+Ss_}*^_n
8x"h(|_H6^_q
_x_Y9Z4E
?
6P+v3lportal爱好者(v_Y
Q_h_d_6}1U5D
上图中你可以看到有多个小窗口,每个窗口是一个独立的应用,这些窗口称之为Portlet,一个Portal可以看作是Portlet的集合。
0b_`-J5pI_^@$c_uportal爱好者
_eC_r_H0G_M_M1.3.Portal的组成
+Y;F,_
_4v#^8} e
"t_G2Z6w$S;fj8z,A 一个Portal可以看作是Portlet的集合,Portal需要提供一个Portlet的运行环境,称之为PortletContainer。
PortletContainer负责创建Portlet,管理它们的生命周期;接受Portal服务器的请求并将请求转发给相应的Portlet,同时返回Portlet生成的内容。
_c,NH_i#m,J(F4` 而Portal服务器负责将每个Portlet生成的内容聚合起来展现给用户,同时负责与用户交互。
如下图:
8z_q_|%R_J&g__R:
E_`1Bw
x!
?
_{!
t.`
D
c_A!
}6Iportal爱好者C_A3b l
w_{_s_W9z&{
1.4.Portlet规范6_'e_g#t_F_S
r9__|_J'd)I5m_q+c 因此在开发Portal应用时,应用开发商主要是在开发实现各个功能的Portlet;同样为了让用户通过Portal访问自己的产品,产品开发商也为自己的产品提供Portlet实现。
然而不同Portal服务器各自Portlet实现的细节有所不同,导致Portlet无法在不同的Portal服务器上兼容,对于同一个应用在不同的Portal服务器上展现需要实现不同的Portlet。
0J%j_UMG_G,P3}
$qD4F_s4vF_C[!
S
为了解决这种情况,Portal服务器厂商开始制定Portlet规范,目前最重要的规范是:
JavaPortletSpecification和WebServicesforRemotePortlets。
'c}#X7c_d F$p_e
_N&?
#I
H__.d_y_x 其中JavaPortletSpecification由JCP(JavaCommunityProcess)组织维护,属于其中的JSR168,已经在2003年10月27日完成1.0的最终版本;WebServicesforRemotePortlets由OASIS组织维护,在2003年8月其1.0版本被正式通过为OASIS标准。
portal爱好者0X/v6J0q_[_|&Y5q8k_Q
_m/xn9E_m3ti"`5m
在接下的章节将着重讲述JavaPortletSpecification,并简要介绍WebServicesforRemotePortlets(简称WSRP)。
F)x6w#A_X_Y_q_u_h}_F;C{
2.JavaPortletSpecification
_G_}?
/T_o_f
(\_\_G_Q-d-b_2.1.一个例子n7Q&|/v_\]mB_A
_P_z(y_f)u'Z_P_Q9y_JavaPortletSpecification中对Portlet的定义是:
)S1W2[_d
|%U
m9~_F
A8awM0R_S
`AportletisaJavatechnologybasedwebcomponent,managedbyaportletcontainerthatprocessesrequestsandgeneratesdynamiccontent.PortletsareusedbyportalsaspluggableuserinterfacecomponentsthatprovideapresentationlayertoInformationSystems.
8n_Q b9k_M_Uportal爱好者_J;P7fwM+_`
到底一个Portlet是怎么样的,首先让我们来看看这个例子:
}_Wg_b_}3`2pA1Z_K)V
K"O;n_Y*X/@]
Hello.javaimportjava.io.IOException;
_P_P-G_o;c_^
dportal爱好者importjavax.portlet.*;
2t
pU_\,i_mpublicclassHelloextendsGenericPortletportal爱好者/O_N_m_D_|_g_P8q*v_t_E
{_aU_e)K_m,Z1Y
publicvoiddoView(RenderRequestrequest,RenderResponseresponse)throwsPortletException,IOException
-}(h"I3b_m_S4X5B;W{
_@X_eN:
U_J_response.setContentType("text/html");
u!
j_g_x_Rresponse.getWriter().write("
Hello,thisismyfirstJSR168portlet!
");_z$F,_"\1l
} T}
_S_F1k_L_yportal爱好者})[_X2O_}_J'v"\
"_9l_d"c_E:
w
#d2B_M)x%I3i_Q
portlet.xml_}_W;_%[_S%|_m*M]
xmlversion="1.0"encoding="UTF-8"?
>
%U_J#q_{D_V%n_Em_R q }2w xmlns="_? _q'}_Z_M,e)X_` xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance"xsi: schemaLocation=" _u'Y;I_|+p 2Pc+B_l B_vB*[%Z_? _tr4v_| portal爱好者_h)u$cd_a&cA *W_W)[_J2h_e_r'o运行结果: (}_a#P i_C_D|8S t zA~R _I4R_Qa_c&~p_N Z/sW A_H1P_r3W 到目前看来Portlet和Servlet很类似,同样都是Java语言编写的Web组件,例子中doView()方法与Servlet的doPost()等方法也很类似,那么为什么不直接使用Servlet技术来实现而需要另外定义一个Portlet规范呢? _l_ m_Z_o)}$gC+]&q8K_h.X_N5}_C_? _S"z_L(N 事实上Portlet规范是在Servlet规范基础上实现的,但是Portlet还拥有许多Servlet所没有的特性,在接下的小节中将详细介绍这些特性。 F'V_i(O_F&q _F(Q%n"a4{_T5OF1N_v0f 2.2.生命周期 j#k ~_K2e d_h: i_} _Q_G_D_}-c首先看看Portlet的接口定义: packagejavax.portlet _U7c_K_A_[! C_}publicinterfacePortlet{_U_f1W_x'H_H_H_l_W! U_],V publicvoidinit(PortletConfigconfig)throwsPortletException;portal爱好者_L^_i_a_M_X_S ST4i publicvoidprocessAction(ActionRequestrequest,ActionResponseresponse)throwsPortletException,IOException;%`_z_B_V-C9\_} publicvoidrender(RenderRequestrequest,RenderResponseresponse)throwsPortletException,IOException; |2N6y_x#ppublicvoiddestroy();_r9A6M6]_h_n*z__ }portal爱好者2u8H: V_D0n_c 2V_t,F p3e6oportal爱好者 )l$H5E__ e_H)i A 我们可以看到熟悉的init()和destroy()方法,当Portal服务器启动时,PortalContainer将相应的Portlet实现类载入、实例化,然后调用init()方法,开发人员通过该方法实现所需的初始化工作;在服务器退出运行之前,PortalContainer调用每个Portlet的destroy()方法,开发人员在这个方法中释放资源。 另外的processAction()和render()两个方法则是用于处理用户请求,整个周期如下图: 9M3x7z_M;D_m.@ _H_I_L+C%p_@8V _E_U#I0eS_q3K%S_c7Aportal爱好者,z'j3^_o_Q_m-X_j_d 2.3.PortletRequest&URLportal爱好者-n3H_X_`2T;^7O_Z &B8s! [_H: ~_K1[_S+~3q 在一个Portal页面中,通常都包含了多个Portlet,在一个时刻用户只能与一个Portlet交互,当用户向一个Portlet发出请求(例如点击了“submit”按钮),整个Portal页面将会重新构成。 在这个过程中,是否有与用户交互的Portlet处理方式显然是不同的,而且用户没有与之交互的Portlet显然不应该受到用户的请求参数。 因此JSR168规范中将对Portlet的请求分为Action和Render两种。 Portlet在收到Action请求,获取用户所提交的信息,进行相应的处理;受到Render请求后,则生成页面代码。 当用户向一个Portlet发出请求,该请求被Portlet容器接受,Portlet容器再调用相应Portlet的processAction()方法;等到processAction()方法执行完毕后,Portlet容器再调用所有Portlet的render()方法,并将这些方法所返回的内容组合形成一个页面返回给客户端。 如下图: "Y_CJ-P _}4R_x;_ n! M*|_l_N *{.y7qv.u,s_S_^_G _z#q_|$s X_w#l1q_y 在上述过程中,所有Portlet的render()方法的调用次序在规范中没有规定,既可能是有顺序的串行调用,也可能是多线程的同步调用,依赖于厂商的具体实现。 _y_e+P_g_v_m7z 7B_of#L_|_s_Uportal爱好者 为了接受用户请求,一个Portlet需要有一个指向其自身的URL,例如用在HTTPFORM的ACTION字段。 但是与Servlet不同的是,Portlet不是一个完整的页面而只是页面的一部分,一个Portlet可以出现在多个页面中,所以Portlet无法绑定具体的URL。 在JSR168规范中定义了PortletURL接口,通过该接口可以得到指向Portlet自身的URL,对应两种用户请求有两种产生URL的方法: _h_F+IB UE&i_u_b_F3E"e_X_]0Fa_g forrender(): PortletURLurl=response.createRenderURL();: K_Z8V_L6} url.setParameter(“customer”,””);url.setParameter(“show”,”summary”);/e9g"r+}_] writer.print(“ #p {_y7t+b! M_p! @}'aportal爱好者 R! Q_F_M_R 2M_bT! {0wT_oportal爱好者portal爱好者_d_t_t8Ow_B_ba_J forprocessAction(): P_|_t6yx_f0q WI : ? /s_Q? ']_e_|portal爱好者 +Aq_}_S_};`_fI B_Bportal爱好者PortletURLurl=response.createActionURL();url.setParameter(“paymentMethod”,”creditCardInProfile”);url.setWindowState(WindowState.MAXIMIZED);portal爱好者_V9i$n%}E(O_B_V_W-T writer.print(“ 5B%~)K1k1n: }0r0_1@ DK_^5c3^_L(S! a _H8](? _? _Y_e_K_Z$? ) 上面的代码我们可以看到,除了得到URL外,还可以在其中加入参数。 另外由于Portal服务器厂商通常都会利用URL增加一些产品相关的参数,因此强烈建议在Portlet中提交用户请求采用POST方式。 s_k_[C: N_I9V _}*W z_i x9g,b2.4.PortletModes&WindowStates 2Z/V8O_f_Q2J)B _L_R#m6Q_[1b;w \ 在Portal应用中,用户通常需要设置、调整Portlet的显示方式,对此JSR168同样做出了规定。 分别有PortletModes和WindowStates。 _s%p7rc.[ _pQ;L_Q8}X%g PortletModes说明Portlet目前所执行的功能模式,规范要求Portal服务器必须支持以下三种模式: 6op_j&? _p_n_K _l"^+p_s_f_? .S_y VIEW——内容显示,通常为缺省模式 T_E/K+G_f M-m_X EDIT——编辑相关的设置5i_R_s_T_i_o_P_V HELP——显示帮助信息_N1Q_D&Y%c 除此之外可以Portal服务器可以实现自定义的模式。 *i_\;Q a#__[-l_yn%d _v_B}0@_R5P4\9H e e#V 每个Portlet在Portal页面中就是一个“窗口”,类似于MSWindows、XWindo等窗口系统Portlet也有自己的窗口状态(WindowStates),规范要求Portal服务器必须支持以下三种窗口状态: _n+b;c9pO NORMAL——普通portlet窗口,在这个状态下通常是与其它Portlet共享Portal页面; _[_^8? 0v_O5J_`_d q MAXIMIZED——最大化portlet窗口,独占Portal页面; _m_x%L_s `_Q_V g_g;h)P f MINMIZED——最小化portlet窗口 _u#N_u_b_T_G#s 除此之外可以Portal服务器可以实现自定义的窗口状态 2m t_[! T Q_| 在规范中对这些特性进行定义,使得Portlet开发者无需关心这方面实现细节,另外在processAction()和render()方法中开发者都可以通过getPortletMode()和getWindowState()等方法获得当前Portlet的情况从而决定相关操作。 portal爱好者6R4g6MO4T_Z_{: k_k5E _D \_P~8O_u 2.5.Preferences&UserInformation+B_G3Y_r4F_I7g&M v,X portal爱好者_v4Ym_o3Db Portal应用一个重要功能就是“个性化”,一方面Portal服务器需要根据用户的不同显示不同的Portlet,另一方面同一个Portlet也会根据用户的偏好显示不同的内容。 这就要求Portlet需要保存一些用户的相关信息,例如一个股票实时信息的Portlet会根据用户所关注的股票显示相应的信息。 *Q e-F"z$o 7c_W_l)g_@#T 每个Portlet都可能有自己相应的个性化信息,JSR168规范提供了PortletPreferences接口来操纵这些信息。 PortletPreferences接口提供读取、设置属性的方法,如下: 0f2z,@_a7~_~: M_s.Z$| G_W(_"B0z_~.lPortletPreferencesprefs=req.getPreferences(); 1L_g6P4g _9k1}C A_xString[]symbols=prefs.getValues(”preferredStockSymbols”, _g_P_u_h_Y_x_lnewString[]{”ACME”,”FOO”});portal爱好者)EE%w_l*Y o portal爱好者_b1G_`$l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Bgfbracportal 认证 笔记