??xml version="1.0" encoding="utf-8" standalone="yes"?>99精品视频免费在线观看,国产精品亚洲产品,欧美一区二区三区在线播放http://www.aygfsteel.com/rain1102/category/37652.html<br/><font color="green" style="font-family: 华文行楷;font-size:16px;">子曰Q危邦不入,乱邦不居。天下有道则见,无道则隐?lt;/font><font color="#3C1435"></font>zh-cnFri, 20 Feb 2009 13:59:55 GMTFri, 20 Feb 2009 13:59:55 GMT60liferay portlet处理程之一http://www.aygfsteel.com/rain1102/archive/2007/01/28/96353.htmlEric.ZhouEric.ZhouSun, 28 Jan 2007 01:59:00 GMThttp://www.aygfsteel.com/rain1102/archive/2007/01/28/96353.htmlhttp://www.aygfsteel.com/rain1102/comments/96353.htmlhttp://www.aygfsteel.com/rain1102/archive/2007/01/28/96353.html#Feedback0http://www.aygfsteel.com/rain1102/comments/commentRss/96353.htmlhttp://www.aygfsteel.com/rain1102/services/trackbacks/96353.html 关键?   liferay    

// 初始?/font>
portal.servlet.MainServlet.init()
 // process startup events
 StartupAction.run()

 // 初始化portlets.
 String[] xmls = new String[] {
  Http.URLtoString(ctx.getResource("/WEB-INF/portlet.xml")),
  Http.URLtoString(ctx.getResource("/WEB-INF/portlet-ext.xml")),
  Http.URLtoString(ctx.getResource("/WEB-INF/liferay-portlet.xml")),
  Http.URLtoString(ctx.getResource("/WEB-INF/liferay-portlet-ext.xml")),
  Http.URLtoString(ctx.getResource("/WEB-INF/web.xml"))
 };
 PortletLocalServiceUtil.initEAR(xmls)

 // 初始化display.
 String xml = Http.URLtoString(ctx.getResource(
   "/WEB-INF/liferay-display.xml"));
 PortletCategory newPortletCategory =
  PortletLocalServiceUtil.getEARDisplay(xml);
 portletCategory.merge(newPortletCategory);

 // 初始化layout模板.
 String[] xmls = new String[] {
  Http.URLtoString(ctx.getResource(
   "/WEB-INF/liferay-layout-templates.xml")),
  Http.URLtoString(ctx.getResource(
   "/WEB-INF/liferay-layout-templates-ext.xml"))
 };
 LayoutTemplateLocalUtil.init(ctx, xmls)

 // 初始化Theme.
 String[] xmls = new String[] {
  Http.URLtoString(ctx.getResource(
   "/WEB-INF/liferay-look-and-feel.xml")),
  Http.URLtoString(ctx.getResource(
   "/WEB-INF/liferay-look-and-feel-ext.xml"))
 };
 ThemeLocalUtil.init(ctx, xmls)

 // (g)查company
 CompanyLocalServiceUtil.checkCompany(_companyId);

 // 其它内容...

// 响应服务
portal.servlet.MainServlet.service()
 
 // get portalContext
 ServletContext ctx = getServletContext();
 ServletContext portalCtx = ctx.getContext(
  PrefsPropsUtil.getString(_companyId, PropsUtil.PORTAL_CTX));
 
 // Struts module config
 ModuleConfig moduleConfig = getModuleConfig(req);

 // Portlet Request Processor - 在struts.config中定?
 portletReqProcessor = PortletRequestProcessor.getInstance(this, moduleConfig);

 // d处理.

 // 处理service前置事g.
 EventsProcessor.process(PropsUtil.getArray(PropsUtil.SERVLET_SERVICE_EVENT_PRE), req, res);

 // 调用Struts的serviceҎ(gu).
 callParentService(req, res);

 // 处理Sruts后置事g.
 EventsProcessor.process(PropsUtil.getArray(PropsUtil.SERVLET_SERVICE_EVENTS_POST), req, res);
 
// struts的ActionServlet.
ActionServlet.process(HttpServletRequest req, HttpServletResponse res)
 processor.process(req, res);

// portal的RequestProcessor.
portal.struts.PortalRequestProcessor.process(HttpServletRequest req, HttpServletResponse res)
  
 // struts的RequestProcessor
 RequestProcessor.process(HttpServletRequest req, HttpServletResponse res)

  string path = processPath(req, res)  // PortalRequestProcessor重蝲

  ActionMapping mapping = processMapping(req, res, path);

  processRoles(req, res, mapping) // PortalRequestProcessor重蝲

  ActionForm from = processActionForm(req, res, mapping);

  processForward(req, res, mapping);

  processInclude(req, res, mapping);

  Action action = processActionCreate(req, res, mapping);

  ActionForward forward = processActionPerform(req, res, action, form, mapping);

  processForwardConfig(req, res, forward);  // TilesRequestProcessor重蝲
  
 // tiles的RequestProcessor
 TilesRequestProcessor.processForwardConfig(req, res, forward)

  processTilesDefinition(forward.getPath(), forward.getContextRelative(), req, res);

   Controller.execute();  // 输出/portal/layout.jsp


/html/portal/layout.jsp  - portal布局面.
 
此处include?portal-ejb/classes/portal.properties里layout.view.page定义的页?portal/layout/view/portlet.jsp

/html/portal/layout/view/portlet.jsp  - portlet布局视图面.

// d模板内容Q模板由liferay-layout-templates.xml文g定义.
String content = LayoutTemplateLocalUtil.getContent(
 layoutTypePortlet.getLayoutTemplateId(), false, theme.getThemeId());
 下面是一个一列的模板:
 Qdiv id="layout-content-outer-decoration"Q?br /> Qdiv id="layout-content-inner-decoration"Q?br />  Qdiv id="layout-content-container"Q?br />   $processor.processColumn("column-1")
  Q?divQ?br /> Q?divQ?br /> Q?divQ?br />
// 处理模板
portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(
  application, pageContext, request, response, content);
 

 // 注入模板处理E序
 TemplateProcessor processor = new TemplateProcessor(ctx, req, res, portletId);
 VelocityContext context = new VelocityContext();
 context.put("processor", processor); 
 // 处理模板
 Velocity.evaluate(context, pageContext.getOut(),
  RuntimePortletUtil.class.getName(), content); 



Eric.Zhou 2007-01-28 09:59 发表评论
]]>
JSR168规范中对接口、具体类的概q?/title><link>http://www.aygfsteel.com/rain1102/archive/2007/01/26/96124.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Fri, 26 Jan 2007 05:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/rain1102/archive/2007/01/26/96124.html</guid><wfw:comment>http://www.aygfsteel.com/rain1102/comments/96124.html</wfw:comment><comments>http://www.aygfsteel.com/rain1102/archive/2007/01/26/96124.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/rain1102/comments/commentRss/96124.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/rain1102/services/trackbacks/96124.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">1Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">GenericPortlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。ؓ(f)具体c,l承?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q提供了(jin)基本的一些功能?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">2Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。ؓ(f)</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">接口部分Q在新编?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">时均需要直接实现此接口或承已实现此接口的</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">c?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">(</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">GenericPortlet)</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q此接口控制?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的整?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Lifecycle</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q根?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">JSR168</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">规范Q将</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Lifecycle</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">划分Z(jin)三个阶段Q?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <br />(1) init</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。初始化?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q在一?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Lifecycle</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">只可初始化一ơ。通过传入?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletConfig</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">可获?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletContext</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <br />(2) handlerRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。在此阶D规范将其分Z(jin)</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">processAction</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">以及(qing)</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">render</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">两种概念Q?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">processAction</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">表示?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">与用L(fng)交互q程的处理;</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">render</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">则主要控制了(jin)</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的内容的昄Q用于组?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">fragment</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q不好翻译,</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">^_^</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <br />(3)destroy</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。结束此</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Lifecycle</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q可在此部分q行</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的一些资源的回收{工作?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <br />Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">容器通过</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的一个标识符调用</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的接口进行与</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的交互?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <br /> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">接口依赖</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletConfig</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">ActionRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">ActionResponse</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">RenderRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">RenderResponse</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q这?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Servlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">非常的相伹{?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">3Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口cM</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">HttpServletRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q通过此接口获取所有与当前</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">相关的参数?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Mode</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">WindowState</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portal</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的上下文环境?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Preference</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletSession</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">4Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">ActionRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口l承?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q通过此接口在</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">processAction</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">中通过</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">ActionRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">可获得相关的</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的交互式h的参数?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">5Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">RenderRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口l承?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletRequest</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q目前规范中此接口中未定义Q何方法?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">6Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletResponse</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口cM?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">HttpServletResponse</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q提供页面显C?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">时的一些内容的写入?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">7Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">ActionResponse</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口l承?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletResponse</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q提供了(jin)交互相关的设|?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletMode</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">以及(qing)?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">WindowState</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的方法?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">8Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">RenderResponse</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口l承?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletResponse</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q提供了(jin)完全cM?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">HttpServletResponse</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的方法,׃</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">只提供片断式的内容,?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Servlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">提供一个完整的面内容不同Q在</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">response</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">时无法设|页面的</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">contentType</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">{相关的面头的东ѝ?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">9Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletConfig</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口非常cM?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">ServletConfig</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q用于获?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">配置文g</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">(portlet.xml)</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">中的初始参数Q类g</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">ServletConfig</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">获取</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">web.xml</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">中的初始参数Q通过</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletConfig</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">可获?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的相关上下文对象</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletContext</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; TEXT-INDENT: -9pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">10Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">WindowState</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此具体cȝ于定?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">所支持?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">WindowState</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; TEXT-INDENT: -9pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">11Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletMode</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此具体cȝ于定?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">所支持?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Mode</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q默认提供的?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">View</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Edit</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Help</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">容器厂商可根据需要提供特D的</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Mode</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; TEXT-INDENT: -9pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">12Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortalContext</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口cM?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">ServletContext</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q用于获?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portal</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">相关的上下文信息Q如</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portal</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的提供商信息{等?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; TEXT-INDENT: -9pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">13Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletPreference</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口主要用于考虑</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">的个性化定制的数据的保存Q此接口q不代表要替代用于保存(sh)性化定制信息的数据库Q可用于保存?sh)些数据量不大情况下的Ҏ(gu)偏好?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; TEXT-INDENT: -9pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">14Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PreferenceValidator</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口用于(g)?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">portlet.xml</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">中的</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Preference</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">参数的合法性?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; TEXT-INDENT: -9pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">15Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletSession</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口非常cM?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">HttpSession</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">Q用于串?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">中的</span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Session</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">数据?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; TEXT-INDENT: -9pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore">16Q?span style="FONT: 7pt 'Times New Roman'">  </span></span> </span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">PortletContext</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">。此接口用于获取?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt">Portlet</span> <span style="LINE-HEIGHT: 150%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt">容器相关的上下文信息?/span> <span lang="EN-US" style="LINE-HEIGHT: 150%; mso-bidi-font-size: 10.5pt"> <o:p> </o:p> </span> </p> <div> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: ?hu)?>      17Q?PortletURL</span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">。此接口有点cM</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: ?hu)?>Jetspeed</span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">中所使用?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: ?hu)?>$jslink.setAction</span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">以及(qing)</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: ?hu)?>$jslink.setPage</span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">之类的方法,如果熟?zhn)?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: ?hu)?>Jetspeed</span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">的架构的应该比较 熟?zhn)q?/span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">个概念,q个主要Z得容器得以识?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: ?hu)?>View</span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">层和</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: ?hu)?>Model</span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">层的交互的衔</span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">接?/span> </div><img src ="http://www.aygfsteel.com/rain1102/aggbug/96124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/rain1102/" target="_blank">Eric.Zhou</a> 2007-01-26 13:33 <a href="http://www.aygfsteel.com/rain1102/archive/2007/01/26/96124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>按照LiferayPortal二次开发指南做例子http://www.aygfsteel.com/rain1102/archive/2007/01/25/95920.htmlEric.ZhouEric.ZhouThu, 25 Jan 2007 06:16:00 GMThttp://www.aygfsteel.com/rain1102/archive/2007/01/25/95920.htmlhttp://www.aygfsteel.com/rain1102/comments/95920.htmlhttp://www.aygfsteel.com/rain1102/archive/2007/01/25/95920.html#Feedback1http://www.aygfsteel.com/rain1102/comments/commentRss/95920.htmlhttp://www.aygfsteel.com/rain1102/services/trackbacks/95920.html需要portal-kernel.jar和portlet.jar两个?攑օlib下?br />package com.rain.portal;

import Java.io.IOException;

import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

public class HelloWorldPortlet extends GenericPortlet {

 @Override
 protected void doEdit(RenderRequest arg0, RenderResponse arg1) throws PortletException, IOException {
  // TODO Auto-generated method stub
  arg1.setContentType("text/html");
  arg1.getWriter().println("Hello World,This is a Portlet!---doEdit");

 }

 @Override
 protected void doView(RenderRequest arg0, RenderResponse arg1) throws PortletException, IOException {
  // TODO Auto-generated method stub
  arg1.setContentType("text/html");
  arg1.getWriter().println("Hello World,This is a Portlet!---doView");

 }

}

package com.rain.portal;

import Java.io.IOException;

import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

public class HelloJSPPortlet extends GenericPortlet {

 @Override
 protected void doEdit(RenderRequest arg0, RenderResponse arg1) throws PortletException, IOException {
  // TODO Auto-generated method stub
  arg1.setContentType("text/html");
  String jspName=getPortletConfig().getInitParameter("edit-jsp");
  PortletRequestDispatcher rd=getPortletContext().getRequestDispatcher(jspName);
  rd.include(arg0, arg1);
 }

 @Override
 protected void doView(RenderRequest arg0, RenderResponse arg1) throws PortletException, IOException {
  // TODO Auto-generated method stub
  arg1.setContentType("text/html");
  String jspName=getPortletConfig().getInitParameter("view-jsp");
  PortletRequestDispatcher rd=getPortletContext().getRequestDispatcher(jspName);
  rd.include(arg0, arg1);
 }

}


web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "<web-app>
  <display-name>TestPortal</display-name>
  <listener>
    <listener-class>com.liferay.portal.kernel.servlet.PortletContextListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>HelloWorldPortlet</servlet-name>
    <servlet-class>com.liferay.portal.kernel.servlet.PortletServlet</servlet-class>
    <init-param>
      <param-name>portlet-class</param-name>
      <param-value>com.rain.portal.HelloWorldPortlet</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
   <servlet>
    <servlet-name>HelloJSPPortlet</servlet-name>
    <servlet-class>com.liferay.portal.kernel.servlet.PortletServlet</servlet-class>
    <init-param>
      <param-name>portlet-class</param-name>
      <param-value>com.rain.portal.HelloJSPPortlet</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloWorldPortlet</servlet-name>
    <url-pattern>/HelloWorldPortlet/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>HelloJSPPortlet</servlet-name>
    <url-pattern>/HelloJSPPortlet/*</url-pattern>
  </servlet-mapping>
  <taglib>
    <taglib-uri>PortletTag</taglib-uri>
    <taglib-location>/WEB-INF/tld/liferay-portlet.tld</taglib-location>
  </taglib>
</web-app>

portlet.xmlPortletresource bundleportlet-namedisplay-nameportlet-classinit-paramexpiration-cathesupportsportlet-infosecurity-role-refhttp://java.sun.com/xml/ns/Portlet/Portlet-app_1_0.xsd

portlet.xml
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd  <portlet>
    <portlet-name>HelloWorldPortlet</portlet-name>
    <display-name>HelloWorldPortlet</display-name>
    <portlet-class>com.rain.portal.HelloWorldPortlet</portlet-class>
    <expiration-cache>0</expiration-cache>
    <supports>
      <mime-type>text/html</mime-type>
    </supports>
    <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>edit</portlet-mode>
    </supports>
    <portlet-info>
      <title>HelloWorldPortlet</title>
      <short-title>HelloWorldPortlet</short-title>
      <keywords>HelloWorldPortlet</keywords>
    </portlet-info>
    <security-role-ref>
      <role-name>guest</role-name>
    </security-role-ref>
    <security-role-ref>
      <role-name>power-user</role-name>
    </security-role-ref>
    <security-role-ref>
      <role-name>user</role-name>
    </security-role-ref>
  </portlet>
  <portlet>
    <portlet-name>HelloJSPPortlet</portlet-name>
    <display-name>HelloJSPPortlet</display-name>
    <portlet-class>com.rain.portal.HelloJSPPortlet</portlet-class>
    <init-param>
      <name>view-jsp</name>
      <value>/view.jsp</value>
    </init-param>
    <init-param>
      <name>edit-jsp</name>
      <value>/edit.jsp</value>
    </init-param>
    <expiration-cache>0</expiration-cache>
    <supports>
      <mime-type>text/html</mime-type>
    </supports>
    <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>edit</portlet-mode>
    </supports>
    <portlet-info>
      <title>HelloJSPPortlet</title>
      <short-title>HelloJSPPortlet</short-title>
      <keywords>HelloJSPPortlet</keywords>
    </portlet-info>
    <security-role-ref>
      <role-name>guest</role-name>
    </security-role-ref>
    <security-role-ref>
      <role-name>power-user</role-name>
    </security-role-ref>
    <security-role-ref>
      <role-name>user</role-name>
    </security-role-ref>
  </portlet>
</portlet-app>


liferay-portlet.xml
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 4.2.0//EN" "<liferay-portlet-app>
  <portlet>
    <portlet-name>HelloWorldPortlet</portlet-name>
    <struts-path>HelloWorldPortlet</struts-path>
    <use-default-template>true</use-default-template>
    <instanceable>true</instanceable>
  </portlet>
  <portlet>
    <portlet-name>HelloJSPPortlet</portlet-name>
    <struts-path>HelloJSPPortlet</struts-path>
    <use-default-template>true</use-default-template>
    <instanceable>true</instanceable>
  </portlet>
  <role-mapper> 
    <role-name>administrator</role-name>
    <role-link>Administrator</role-link>
  </role-mapper>
  <role-mapper>
    <role-name>guest</role-name>
    <role-link>Guest</role-link>
  </role-mapper>
  <role-mapper>
    <role-name>power-user</role-name>
    <role-link>Power User</role-link>
  </role-mapper>
  <role-mapper>
    <role-name>user</role-name>
    <role-link>User</role-link>
  </role-mapper>
</liferay-portlet-app>

PortletLiferay PortalPortlet<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 4.0.0//EN" "<display>
  <category name="category.test">
    <portlet id="HelloWorldPortlet"/>
    <portlet id="HelloJSPPortlet"/>
  </category>
</display>

view.jsp
<table cellpadding="8" cellspacing="0" width="100%">
  <tr>
    <td>
      <font class="Portlet-font" style="font-size:x-small;">
        This is a <b>Sample JSP Portlet</b> used in viewing model. Use this as a quick way to include JSPs.
      </font>
    </td>
  </tr>
</table>

edit.jsp
<table cellpadding="8" cellspacing="0" width="100%">
  <tr>
    <td>
      <font class="Portlet-font" style="font-size:x-small;">
        This is a <b>Sample JSP Portlet</b> used in editing model. Use this as a quick way to include JSPs.
      </font>
    </td>
  </tr>
</table>


Eric.Zhou 2007-01-25 14:16 发表评论
]]>玩liferay开?j)的一?/title><link>http://www.aygfsteel.com/rain1102/archive/2007/01/25/95881.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Thu, 25 Jan 2007 03:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/rain1102/archive/2007/01/25/95881.html</guid><wfw:comment>http://www.aygfsteel.com/rain1102/comments/95881.html</wfw:comment><comments>http://www.aygfsteel.com/rain1102/archive/2007/01/25/95881.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/rain1102/comments/commentRss/95881.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/rain1102/services/trackbacks/95881.html</trackback:ping><description><![CDATA[<p>昨天看了(jin)Liferay Portal二次开发指南,q按照里面的例子q行?jin)开发。但׃初次接触PortalQ更是初ơ接触Liferay Q所以也不知道怎么ȝ他。今天早上到?jin)Liferay 的中文站看到需要部|Ԍ所以就试?jin)一下,竟然可以?jin)!好开?j)?br />让h生气的是Q好不容易用MSN加了(jin)一个会(x)q玩意的兄弟Q昨天就问他?jin),他说很忙Q所以就没好意思打C(jin)Q今天早上又来问他,竟然q说忙,其实告诉我一下需要到里面部vQ然后怎么看不可以了(jin)吗!哎``?j)都凉?jin)Q?br />但ȝ来说Q还是满开?j)的。因为终于看C天的成果?jin)?br />dq去--->理---->自动部v<br />然后d内容---->试里面有部v的东东了(jin)Q?/p><img src ="http://www.aygfsteel.com/rain1102/aggbug/95881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/rain1102/" target="_blank">Eric.Zhou</a> 2007-01-25 11:41 <a href="http://www.aygfsteel.com/rain1102/archive/2007/01/25/95881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Portal中的重要基类GenericPortlethttp://www.aygfsteel.com/rain1102/archive/2007/01/24/95687.htmlEric.ZhouEric.ZhouWed, 24 Jan 2007 03:02:00 GMThttp://www.aygfsteel.com/rain1102/archive/2007/01/24/95687.htmlhttp://www.aygfsteel.com/rain1102/comments/95687.htmlhttp://www.aygfsteel.com/rain1102/archive/2007/01/24/95687.html#Feedback0http://www.aygfsteel.com/rain1102/comments/commentRss/95687.htmlhttp://www.aygfsteel.com/rain1102/services/trackbacks/95687.html ?/span> Servlet 一P~写?/span> Portlet 也必ȝ接或者间接的扩展基类 GenericPortlet Q这个是?/span> JCP 针对 Portal 提出?/span> JSR168 规范定义的。只要扩展自规范?/span> GenericPortlet Q所有的 Portlet 都可以在支持 JSR168 规范?/span> Portal 服务器上q行?/span>

GenericPortlet l一定义?jin)可?/span> Portal 容器识别和调用的Ҏ(gu)Q包括:(x)

public Init() Q初始化Q?/span>

public Init(PortletConfig) Q初始化Q?/span>

public getInitParameter(String) Q取得在 Portlet.xml 中定义的初始化参敎ͼ

public getInitParameterNames() Q取得在 Portlet.xml 中定义的全部初始化参敎ͼ

public getPortletConfig() Q取得包含初始化参数的配|对?/span> PortletConfig 实例Q?/span>

public getPortletContext() Q取?/span> Portlet 上下文;

public getPortletName() Q取得在 Portlet.xml 中定义的 Portlet 名称?/span>

public getResourceBundle(Locale) Q取?/span> Portlet 国际化的 Resource Bundle Q?/span>

protected getTitle(RenderRequest) Q取?/span> Portlet 的标题;

protected doView(RenderRequest Q?/span> RenderResponse) Q?/span> Portlet 览模式的处理方法;

protected doEdit(RenderRequest Q?/span> RenderResponse) Q?/span> Portlet ~辑模式的处理方法;

protected doHelp(RenderRequest Q?/span> RenderResponse) Q?/span> Portlet 帮助模式的处理方法;

protected doDispatch(RenderRequest Q?/span> RenderResponse) Q?/span> Portlet 行ؓ(f)分发Q?/span>

protected processAction(ActionRequest Q?/span> ActionResponse) Q?/span> Portlet 处理 Action Request 的方法;

protected render(RenderRequest Q?/span> RenderResponse) Q?/span> Portal 处理 Render Request 的方法;

public destroy() Q?/span> Portlet 销毁,l止其生命周期?/span>

?/span> Portlet Portal q行的时候, doView ?/span> doEdit ?/span> doHelp 三个Ҏ(gu)分别被调用,用以生成 Portlet 标记。同样也可以调用 Servlet 生成 Portlet 标记Q或者不调用 JSP 或?/span> Servlet Q直接在Ҏ(gu)中得?/span> PrintWriter 然后用最单的 pw.println() 打印出内宏V这个过E类?/span> Servlet Q如下:(x)

PrintWriter pw = renderResponse.getWriter();

pw.println(“Hello Q?/span> world!”);

?/span> cMQ可以?/span> 得到配置文g?/span> 的初始|只不q?/span> ?/span> 中,?/span> ?/span> 中?br />

portlet.xmlQ?/span>

       <init-param>
           <name>jspView</name>

           <value> /jsp/view.jsp</value>
       </init-param>


针对如上portlet.xml中的初始化信息,可以采用如下的调用方式:(x)

SimplePortlet.java Q?/span>

String jspName = getPortletConfig().getInitParameter("jspView");



Eric.Zhou 2007-01-24 11:02 发表评论
]]>
【JetSpeed】简?/title><link>http://www.aygfsteel.com/rain1102/archive/2007/01/23/95491.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Tue, 23 Jan 2007 03:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/rain1102/archive/2007/01/23/95491.html</guid><wfw:comment>http://www.aygfsteel.com/rain1102/comments/95491.html</wfw:comment><comments>http://www.aygfsteel.com/rain1102/archive/2007/01/23/95491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/rain1102/comments/commentRss/95491.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/rain1102/services/trackbacks/95491.html</trackback:ping><description><![CDATA[<span id="wmqeeuq" class="style7"> <font face="?hu)? size="2">Jetspeed是一个开放源代码的企业信息门?EIP)的实? 使用的技术是Java和XML. 用户可以使用览? 支持WAP协议的手机或者其它的讑֤讉KJetspeed架设的信息门戯取信? Jetspeed扮演着信息集中器的角色, 它能够把信息集中hq且很容易地提供l用? <br />Jetspeedh如下的特? <br /><br />* 卛_成ؓ(f)标准化的Java Portlet API <br />* Z模板的布局, 包括JSP和Velocity <br />* 通过开攄内容同步技术支持远EXML内容交换 <br />* 定制默认的主?<br />* 使用数据库进行用戯?<br />* 内存~存技? 加快面的响?<br />* 通过Rich Site Summary技? 支持同步内容 <br />* 和Cocoon, WebMacro, Velocity集成. <br />* Wireless Markup Language (WML) 支持 <br />* 使用XML格式的配|文件注册portlet. <br />* 完整的Web Application Archive (WAR) 支持 <br />* Web应用E序开发的基础设施 <br />* 可以在本地缓存远E内?<br />* 与Avantgo同步 <br />* 可移植到所有支持JDK1.2和Servlet 2.2的^?<br />* 与Turbine模块和服务集?<br />* 可以Ҏ(gu)用户, 安装媒体cd和语a的不同设? 产生不同的个性化服务 <br />* 持箋(hu)化服务得所qportlet能够Ҏ(gu)的存储每个用L(fng)状? 面和portlet <br />* 使用皮肤技术得用户可以选择portlet的颜色和昄属?<br />* 自定义功能是的管理员可以选择portlet以及(qing)定义个h面的布局 <br />* 在数据库中存储PSML <br />* 通过Jetspeed的安全portlets理用户, l?角色和权?<br />* Z角色对访问portletq行控制 </font> </span><img src ="http://www.aygfsteel.com/rain1102/aggbug/95491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/rain1102/" target="_blank">Eric.Zhou</a> 2007-01-23 11:21 <a href="http://www.aygfsteel.com/rain1102/archive/2007/01/23/95491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSR#168 Portlet 说明http://www.aygfsteel.com/rain1102/archive/2007/01/23/95475.htmlEric.ZhouEric.ZhouTue, 23 Jan 2007 02:40:00 GMThttp://www.aygfsteel.com/rain1102/archive/2007/01/23/95475.htmlhttp://www.aygfsteel.com/rain1102/comments/95475.htmlhttp://www.aygfsteel.com/rain1102/archive/2007/01/23/95475.html#Feedback0http://www.aygfsteel.com/rain1102/comments/commentRss/95475.htmlhttp://www.aygfsteel.com/rain1102/services/trackbacks/95475.html1 序言

许多大型企业的网? 渐渐采用?portal server 作ؓ(f)开发的基础. 至于什么是 portal ? 中文译?"门户|站"?有h可能?. 天杀?. 门户|站不是像 yahoo, pchome, yam {等。不q? 我们现在讨论?portal server, 不是那么地简? 基本?yahoo, pchome, yam 那些只能UCؓ(f)搜烦(ch)引擎的门L(fng)站?

如果你从来沒有用q?portal server 或是似懂非懂.. 大家可以q结?MyNetscape ?MyYahoo ?注册一个帐受因?MyNetscape 的样式比较好? 所以我接下来就?MyNetscape Zl的范例?

如果你第一ơ接触到 portalQ你?x)惊讶的发?.. ?. Z一个网站里面充满了(jin)q么多小H口. 我们U这些小H口叫做 "portlet"Q而且每个窗口都存在着独立的信息与内容Q可以放到最大化Q羃?yu),q原Q关闭等{。当你登陆之后,可以选择?qing)调整自?portlet 的配|,也可以设|自己喜q风格与样式,更可以设|每?portlet 的资料配|。这U以客户Z帝的pȝQ就是我们将要介l的 portal?

2 Portal 的组?/h3>

Portal 的组成可以分Z部䆾 (1) Portal Server (2) Portlet Container (3) Portlet

1) Portal Server 的定义是
一?PortalQ门L(fng)站)(j)是指一?Web-based 的系l,通常都会(x)提供个h化设|、单一登陆、以?qing)由各种不同来源或不同网站取得各式各L(fng)信息Qƈ且将q些信息攑֜|页之中l合而成的呈现^収ͼ门户|站?x)有_y的个人化讄L供定制的|页Q当不同{的用者来览该页面将获得不同的信息内宏V?
2) Portlet Container 的定义是
portlet container 是提?portlets 执行的环境,包含?jin)许?portlets q且理他们的生命周期,他也?x)永q保存着 portlets 的喜好设|,一?portlet container 接收到来?portal 的请求后Q接着这个请求传递给存在 container ?portlet 执行。portlet container 没有义务ȝ?portlets 产生的信息內容,q个工作必须?portal 来处理。portal ?portlet container 可以攑֜一赯为同一个系l的lgQ或者分开成ؓ(f)两个独立的组件?
3) Portlet 的定义是
一?Portlet 是以 Java 技术ؓ(f)技术的 Web lgQ由 Portlet Container 所理Q专门处理客L(fng) request 以及(qing)产生各种动态的信息内容。Portlets 为可插式 ( pluggable ) 的客L(fng)面组Ӟ提供呈现层成Z个信息系l。这些由 portlet 产生的内容也被称为片D?(fragment)Q而片D|h一些规则的Markup( HTML、XHTML、WML )Q而且可以和其他的片段l合而成一个复杂的文g。?Portlet 中的内容正常来说是与其他 Portlet 的内容聚合而成Z?Portal |页。?Portlet 的生命周期是?Portlet Container 所理控制的。客L(fng)?portlets 的互动是?portal 通过典型?request/response 方式实现Q正常来_(d)客户?x)?portlets 所产生的内容互动,举例来说Q根据下一步的q接或者是认送出的表单,l果 portal 会(x)接收?portlet 的动作,这个处理状况{向到目标 portlet。这?portlet 内容的生可能会(x)因ؓ(f)不同的用者而有不同的变化,完全是根据客户对于这?portlet 的设|?

3 portlet ?servlet 的关p?/h3>Portlet ?Servlet 是兄弟有那么一点点怼却又有那么一点点不同Q因?Servlet ?Portlet 不尽然相同,所以研I小i決定将 portlets 定义成ؓ(f)一个新的组Ӟ因此定义?portlets 一个新的ƈ且明的界面与行为。ؓ(f)?jin)尽可能与现有?servlet l合辑ֈ重复使用的目的,portlet 的规范利用了(jin) servlet 的规范,许多观念都很怼的,l合 portlets、servlets ?jsp 在同一个网站系l中Q我们称?portlet application 。在同一?portlet application 中,他们分享同一?classloaderQcontext ?session?br />抽象cportlet是Portlet API的核?j)?PortletcL展了(jin)Servelt API的HTTPServlet。所有的Portlet 都从HTTPServletl承而来Q间接地扩展?jin)Portletc,如下所C:(x)
... +--javax.servlet.http.HttpServlet | +--org.apache.jetspeed.portlet.Portlet | +--org.apache.jetspeed.portlet.PortletAdapter | +--com.myCompany.myApplication.myPortlet 

因此QPortlet是一cȝD的ServletQ能方便的插入Portal ServerQƈ在其上运行。与 servlet 不同Qportlet 无法直接发送重定向或错误信息到览器,以及(qing)转发h或者写专用标记到输出流?/p>

?servlet 相比QPortlet有更强的动态性,可在不重新启?Portal Server 的情况下q行更新Q?/p>

  • 可以使用门户|站理界面安装和除去portlet 应用E序
  • portlet 的设|可由拥有适当讉K权的理员进行更?
  • 可以使用理 portlet 动态创建和删除 portlet

Portlet容器依赖于J2EE体系l构。Portlet 被打包成cM于J2EE Web应用的WAR文gQƈ按类g servlet 的方式部|Ӏ与其它 servlet 怼Q?servlet 部v描述W(web.xmlQ把 portlet 定义到应用程序服务器Q这个文件定?portlet 的类文g和只d始化参数。除此之外,portletq必L供一个portlet的部|描q符Qportlet.xmlQ来把portlet定义到portal server

1) Portlet ?Servlet 的相g?/h5>@ portlets 也是 Java 技术的 web lg
@ portlets 也是有特定的 container 在管?br />@ portlets 可以动态生各U内?br />@ portlets 的生命周期由 container 所理
@ portlets 和客L(fng)的互动是通过 request/response 的机?
2) Portlet ?Servlet 也有一些不?/h5>@ portlets 只?markup 信息片段Q不是完整的|页文g。?Portal ?x)将所有的 Portlet markup 信息?D|C个完整的 Portal |页?br />@ portlets 不会(x)?URL 有直接的关系
@ 客户端必通过 portal pȝ才能?portlets 互动
@ portlets 有一些定义好?request 处理Qaction request 以及(qing) render request?br />@ portlets 默认定义 portlet modes ?qing)窗口状态可以指出在|页中该 portlet 的哪个功能正在执行及(qing)现在?状态?br />@ portlets 可以在同一?portal |页之中存在多个?
3) Portlet 有一些附加的功能?Servlet 所没有?/h5>@ Portlets 能够存取?qing)储存永久配|文件及(qing)定制资料?br />@ portlets 可以存取使用者数?br />@ portlets h URL 的重写功能在文g中去动态徏立连l,允许 portal server 不用ȝ道如何在|页的片 D之中徏立连l及(qing)动作?br />@ portlets 可以储存?sh)时性的数据?portlet session 之中Q拥有两个不同的范围 Q?br />application-wide scope ?portlet private scope ?
4) Portlet 不具有一些功能, 但是 Servlet 却有提供
@ servlet h讄輸出的文字编? character set encoding)方式
@ servlet 可以讄 HTTP 输出?header
@ servlet 才能夠接收客户对?portal 发出?URL h

4 RI - pluto 冥王星计?/h3>

JSR 是由 JCP ( www.jcp.org ) q个 Java l织所定义出来的规范。几乎每?JSR 都会(x)产出 TCK* ?RI**

*TCK ( Technology Compatibility Kit ) 兼容性测试组?br />*RI ( Reference Implementation ) 实现参?

2003/10/27 JSR#168 Portlet Spec 1.0 已经正式公布。以? 大家可以开始根据这个规范开发兼Ҏ(gu)的产品。而这个标准规范书?RI 是采用 Apache Jakarta Pluto 冥王星计划。至于ؓ(f)何叫做冥王星,我猜?Sun 惌把光芒射到冥王星都会(x)发光?:P

目前 pluto 未有正式的版本释放, 来有兴的人可以从 jakarta |站下蝲。不q目前我?CVS 取得版本已经可以正常q行?jin)。安装的Ҏ(gu)十分?. 只需要执?%pluto%/bin/install 可以安装了(jin)Q安装过E会(x)询问?tomcat 的目录,假设?tomcat 根目录是 c:\tomcat4.1.27 Q你输入 c:\tomcat4.1.27 可以了(jin)?

接着 http://localhost:8080/pluto/portal 可以看到很漂亮?portal 界面Q至于操作模式与Ҏ(gu)非常单,请多加操控就可以慢慢?jin)?portlet 的控制方法了(jin)?

?portlet spec 中定义的控制有分?
1) 基本?Portlet Modes
VIEW - 你没有做M动作仅仅做内Ҏ(gu)C?br />EDIT - ~辑相关的设|?br />HELP - L帮助

2) 基本?Window States
NORMAL - q原 portlet H口
MAXIMIZED - 最大化 portlet H口
MINMIZED - 最化 portlet H口

其实, q些动作都已l由 portal 所实现Qportlet container 接收与回应相关的动作。真正在E序开发上q不?x)考虑到这些细节,除非你要做一?portlet container。而开发上要考虑的是什么h能夠做什么事情。例如说未登陆的h应该只能?doView / doHelpQ而不能夠 doEdit q种权限控机制的开发?

5 css 定义

每个通过认证的用者,可以用相关的 portlet 外观 ( Look&Feel )讄Q而这些设|就是通过 css ?~辑。在没有 portlet spec 之前Q各家厂商都自行规定或由 ISV 各自完成Q造成?jin)許?portlet 无法q同一?CSS 来实玎ͼUL上将?x)有许多问题发生?

因此 css 的定义对于具有定制功能的 portal 是相当重要的?

0) Anchor
q个q没有定?:P

1) Fonts ( font )
portlet-font
portlet-font-dim

2) Message ( paragraph .. )
portlet-msg-status
portlet-msg-info
portlet-msg-error
portlet-msg-alert
portlet-msg-success

3) Sections ( table, div, span ... )
portlet-section-header
portlet-section-body
portlet-section-alternate
portlet-section-selected
portlet-section-subheader
portlet-section-footer
portlet-section-text

4) Forms ( form )
portlet-form-label
portlet-form-input-field
portlet-form-button
portlet-icon-label
portlet-dlg-icon-label
portlet-form-field-label
portlet-form-field

5) menus ( popup menu )
portlet-menu
portlet-menu-item
portlet-menu-item-selected
portlet-menu-item-hover
portlet-menu-item-hover-selected
portlet-menu-cascade-item
portlet-menu-cascade-item-selected
portlet-menu-description
portlet-menu-caption

基本? 你要?jin)解什么地方该用什?cssQ这?css 名称套用在你开发的 portlet 之中Q你可以移植到其他支持 jsr#168 的系l,不需要在花时间去更改成ؓ(f)他们?Look&Feel?

6 信息片段 ( fragment markup ) 的限?/h3>每个 portlet 输出都是一个信息片D,之前有提? q些 markup 有些限制?

如果你是生成 HTML 格式的信息片D,?不可?拥有以下q些 tag Q?br />base, body, iframe, frame, frameset, head, html, ?title

如果生成?XHTML ?XHTML-basic 格式的信息片D,?不可?拥有以下q些 tag Q?br />base, body, iframe, head, html ?title

7 其他l节

最? portlet 需要考虑的还?security, caching, taglib {等..

Portal 是连l后?EAI 处理的信息整合^収ͼ提供?jin)企业完整的解决?gu)Q提供了(jin)单一登陆的机Ӟ贴心(j)的个人化面讄Q更可以提供各式各样q_?pda, 手机{等的统一H口。因? 政府与大企业?*应该* 采用q种解决Ҏ(gu)Q通过 Webservice 达成信息?金流/物流 的效?...



Eric.Zhou 2007-01-23 10:40 发表评论
]]>几种开源Portal的简单介l分?http://www.aygfsteel.com/rain1102/archive/2007/01/23/95465.htmlEric.ZhouEric.ZhouTue, 23 Jan 2007 01:58:00 GMThttp://www.aygfsteel.com/rain1102/archive/2007/01/23/95465.htmlhttp://www.aygfsteel.com/rain1102/comments/95465.htmlhttp://www.aygfsteel.com/rain1102/archive/2007/01/23/95465.html#Feedback0http://www.aygfsteel.com/rain1102/comments/commentRss/95465.htmlhttp://www.aygfsteel.com/rain1102/services/trackbacks/95465.html

主要包括QPlutoQLiferayQeXo,Jetspeed四种开源Portal的介l和分析Q有助于对具体项目选择合适的开发^台?

Q?Q?font color="#421ae6">Pluto
2003q?0月JSR168规范1.0正式公布后,Jakarta Apache开始实施Pluto计划Q冥王星计划Q,最l开发出该规范的一个参考实玎ͼReference ImplementationQ,即Pluto。Pluto?.0.1-rc2版与2004q?2月发布?br />Pluto实现Z JSR168的一?Portlet ContainerQ相当于为开发者提供了(jin)一个运行portlets的工作^台。Pluto本n也提供了(jin)一个简单的Portal模块Q该模块仅仅是ؓ(f)?jin)满Portlet容器和JSR 168的需要而写的,因而显得非常简单,提供的实用的Portlet也非常少。从某种意义上说Pluto更像是一个Portlet ContainerQ作Z个实用的Portal开发框架尚需要更强大的支持。但新版本的Pluto仍没有推出。对于Pluto的应用开发,Apache更推荐用Jetspeed目框架?br />管Pluto作ؓ(f)一个完整的Portal应用q非常欠~。但不少有媄(jing)响力的Portal目使用Pluto作ؓ(f)Portlet Container。这些项目包括:(x)Jetspeed 、Cocoon uPortal 、Jahia{。由此可见Pluto的重要性。从开发者和学习(fn)者的角度看,Pluto的意义还在于为开发者和学习(fn)者提供了(jin)一个深入了(jin)解Portlet Container的简z的参考实例?

Q?Q?font color="#421ae6">Liferay
LiferayQ支持JSR168Q代表了(jin)完整的J2EE应用 Q最高版本是2005q?月推出的Professional 3.2.0。它的主要优Ҏ(gu)Q?br />      Q?Q用第三放的开源项目,如Hibernate{。特别是前台界面部分使用?jin)Struts技术;
      Q?Q支持包括中文在内的多种语言Q?br />      Q?Q支持较多的先进技术,如Web Services、EJB, JMS, SOAP, XML{;
Liferay的缺Ҏ(gu)它缺乏一个简单清晰可拓展的架构设计,整个架构比较复杂且庞大;Struts1.1本nq不支持JSR168Q所以Liferay在实现诸如上下文׃n{问题(sh)昑־十分W重且没有从Ҏ(gu)上解册些问题;portlet设计也显得比较凌乱。此外,如果你的门户pȝ准备应用于商业用途,你需要购买License。基于它q行二次开发比较困难?br />

Q?Q?font color="#421ae6">eXo
eXo(支持JSR168)ZJSF的Portal实现。最新版本是2004q?0月发布的1.0RC1版?br />主要优点包括Q?br />Q?Q?#160;由AOPQAspectJQ实现的内容理pȝQ极大提高(sh)(jin)内容理性能Q?br />Q?Q?#160;ZPico Container的Portlet ContainerQPico是一个著名的IoC3轻量U容器。同时也实现?jin)上下文׃nQ二ơ开发的程比较清晰Q?br />Q?Q?#160;使用Struts框架技术;
Q?Q?#160;提供工作技术服务(Workflow serviceQ?br />Q?Q?#160;提供?jin)很多交工P通过XML可以为结构化的信息轻易地创徏视图Q?br />     ׃可见eXo采用?jin)诸多先q技术,但存在不缺炏V主要缺点:(x)׃Portal Server本n的数据是使用xmldb来进行处理,保存到数据库的数据都是ؕ码而且它所有默认的q_字符集都是ISO-8859_1。缺乏中文的充分支持Q对于中文门L(fng)开发ƈ没有优势Q由于JSF是重量的表现层框架Q得exo的二ơ开发工作量比较大;对于商业Portal应用开发需要购买License。M开发难度较大?

(4) JetSpeed
JetSpeed是Apachel织的开源Portal目。Jetspeed 目前有两个版本可供选择1.X?.0版本。Jetspeed1.X出现得比较早Q但W一个较为成熟的版本发布?.4。此?.X不断推出新版本。但Jetspeed1.X都不支持JSR168。当JSR168?003q发布后QApche开始开发Jetspeed2Q提供对JSR168 的全面支持?
下表是Jetspeed重要版本的发布日期:(x)
Jetspeed的重要版?#160;                                        发布日期
Jetspeed-1.4b2                                              2002q?2?br />Jetspeed-1.5                                                2004q??br />Jetspeed-2.0-M1                                             2004q?2?br />Jetspeed-2.0-M2                                             2005q??br />Jetspeed1.XZTurbine框架开发,它提供了(jin)丰富的Portal技术功能。主要优Ҏ(gu)QXML文g注册PortletQ便于管理;囑Ş化的部v和卸载;对中文的良好支持{。值得注意的是IBM早期的WebSphere Portal Server是在JetSpeed1.X上进行二ơ开发的。Jetspeed2.0?.X基础上进行了(jin)较大的改动,功能更加丰富Q完全遵循JSR标准?

配置Ҏ(gu)Q不同的版本的配|可能有变化Q如不成功,可以自行察看文档?
Pulto在Tomcat下的安装配置Ҏ(gu)Q?br />Q?Q?#160;? 下蝲最新的二进制版本安装文?/font>
Q?Q?#160;执行%pluto%/bin/installQ将它安装到Tomcat目录下即?br />Q?Q?#160;在浏览器中输入:(x) Q运行Pluto http://localhost:8080/pluto/portal http://portals.apache.org/pluto/mirrors.cgi

Liferay Professional在Tomcat下的安装配置Ҏ(gu)Q?br />Q?Q?#160;? 下蝲Liferay Professional安装文g Q?br />Q?Q?#160;解压ZIP包到某个目录?br />Q?Q?#160;若下载Tomcat版本的Liferay安装文gQ则不需再装TomcatQ直接启动bin目录下的startup.bat文g?br />Q?Q?#160;在浏览器中输?/font> q行Liferay Professional?/font> http://localhost/ http://www.liferay.com/downloads/index.jsp

eXo Platform在Tomcat下的安装配置Ҏ(gu)Q?br />Q?Q?#160;? 下蝲eXo Platform的安装包 ?br />Q?Q?#160;解压ZIP包到某个目录?br />Q?Q?#160;若下载Tomcat版本的eXo安装文gQ则不需再装TomcatQ直接启动bin目录下的startup.bat文g?br />Q?Q?#160; 在浏览器中输?/font> q行eXo Platform. http://localhost/ http://www.exoplatform.com/portal/faces/public/exo

Jetspeed2在Tomcat下的安装配置Ҏ(gu)Q?br />Q?Q?#160;? 下蝲Jetspeed2 M1或M2版本安装?/font> ?br />Q?Q?#160;若是安装包中已经捆绑TomcatQ解压即可。若安装包不含TomcatQ先安装TomcatQ然后将安装包解压到Tomcat目录Qƈ覆盖相关文g卛_?br />Q?Q?#160;安装要注意的问题有:(x)Jetspeed2M1版本׃Bug无法安装Tomcat5.5上(此BUG?/font> Q;Jetspeed2必须安装在Tomcat5.0.28以上版本上,否则低版本由于JAAS问题无法登陆 Q?br />Q?Q?#160;启动jetspeed-database目录下的start-database.batQ启动数据库Q?br />Q?Q?#160;启动TomcatQ?br />Q?Q?#160;在浏览器中输?/font> q行JetspeedQ?/font> http://localhost:8080/jetspeed/portal http://issues.apache.org/jira/browse/JS2-187 http://www.apache.org/dist/portals/jetspeed-2/



Eric.Zhou 2007-01-23 09:58 发表评论
]]>portal基础知识http://www.aygfsteel.com/rain1102/archive/2007/01/23/95459.htmlEric.ZhouEric.ZhouTue, 23 Jan 2007 01:42:00 GMThttp://www.aygfsteel.com/rain1102/archive/2007/01/23/95459.htmlhttp://www.aygfsteel.com/rain1102/comments/95459.htmlhttp://www.aygfsteel.com/rain1102/archive/2007/01/23/95459.html#Feedback0http://www.aygfsteel.com/rain1102/comments/commentRss/95459.htmlhttp://www.aygfsteel.com/rain1102/services/trackbacks/95459.htmlPortal包括Q?br />(1) Portal Server。『Portal Server是基于WEB的应用程? 它将不同资源q行整合q展现给用户。有些文章直接把Portal Server叫做PortalQ请注意。?br />(2) Portlet Container。『Portlet Container用来理Portlet的生命周期ƈ且提供其q行所需要的必要环境. q且为Portlet Preferences提供持久?Persistent)存取服务.但是其不支持内容的Aggregation. Aggregation由P(pn)ortallg提供.?br />(3) Portlet。『Portlet 是以
Java 技术ؓ(f)技术的 web lgQ可以被容器理Q可以生动态内宏V处理请求ƈ动态返回页? 可以做ؓ(f)Portal 的可拔插的用L(fng)面组??br />
我们需要Portal的目的就是要做到pȝ功能与模块的可配|。同时要开源ƈW合标准。能与其他的pȝq行l合比如Struts?br />

目前比较L的Portal产品Q?br />Apache JetspeedQhttp://jakarta.apache.org/jetspeed/Q?br />LiferayQhttp://www.liferay.comQ?br />EXOportalQhttp://cvs.sf.net/viewcvs.py/exo/ExoPortal/Q?br />PlutoQhttp://jakarta.apache.org/plutoQ?br />BEA WebLogic Portal Qhttp://edocs.bea.com/wlp/docs81/javadoc/com/bea/portal/model/Portlet.html Q?br />IBM Websphere Portal Qhttp://www.software.ibm.com/wsdd/zones/portal/ Q?br />Oracle Portal Developer Kit Qhttp://portalstudio.oracle.com/Q?
jfoxportalQhttp://www.huihoo.org/jfox/jfoxportal/index.html 刚提?gu)案,不过是国内的。)(j)

说PortalQ就不能不提JSR#168 Portlet?br />
JSR 是由 JCP (
http://www.jcp.org/ ) q个 Java l织所定义出来的规范。JSR#168规范?yu)是一个关于Portlet的规?——Portlet Spec 1.0 。既然有?jin)规范,理所当然的之后的产品应该按照这个规范来制作?br />

JSR168的目标是Q?span lang="EN-US">

定义portlet的运行时环境Q即portlet容器

定义portlet?span lang="EN-US">portlet容器之间?span lang="EN-US">api?span lang="EN-US">

提供portlet存储易失数据和持久数据的机制

提供portlet包含servlet?span lang="EN-US">jsp的机?span lang="EN-US">

定义方便部v?span lang="EN-US">portlet打包Ҏ(gu)

提供jsr168规范下的portal的二q制portlet便携?span lang="EN-US">

通过WSRPQ?span lang="EN-US">web service for remote portletQ协议运行符?span lang="EN-US">jsr168规范的远E?span lang="EN-US">portlet

IT 界已l广泛的接受?span lang="EN-US">jsr168规范。所有的portal领域主要公司都是jsr168专家l的成员Q?span lang="EN-US">Apache,AGT,BEA,Boeing,Borland,Broadvision,Citrix,EDS, Fujitsu, Hitachi, IBM, Novell, Oracle, SAP, SAS Institute, Sun Microsystems, Sybase, TIBCO, and Vignette。官Ҏ(gu)持列表甚x(chng)ѝ?br />
客户端请求由 Portal Web 应用E序q行处理Q它为当前用h索当前页上的 Portlet 。然后, Portal Web 应用E序为每?/span> Portlet 调用 Portlet 容器来通过 Container Invoker API (g)索它的内宏V?/span> Portlet 容器通过 Portlet API 调用 Portlet ?/span> Container Provider Service Provider Interface Q?/span> SPI Q允?/span> portlet 容器通过 Portal (g)索信息?/span>

Portlet H口包括Q?/span>

l        标题栏,带有 Portlet 的标?/span>

l        修饰Q包括用于更?/span> Portlet 的窗口状态的按钮Q比如最大化或最化 Portlet Q和用于更改 Portlet 的模式的按钮Q比如显C帮助或~辑预定义的 Portlet 讄Q?/span>

l        ?/span> Portlet 产生的内容(也称Z个标记段Q?/span>

portal  

<!--[if !supportLists]-->²        <!--[endif]-->portalhttp<!--[if !supportLists]-->²        <!--[endif]-->portal<!--[if !supportLists]-->²        <!--[endif]-->portalportletportal<!--[if !supportLists]-->²        <!--[endif]-->portletportalportletportlet<!--[if !supportLists]-->²        <!--[endif]-->portalportletportletsportal<!--[if !supportLists]-->²        <!--[endif]-->portalportlets1portal Portlet Portal portlet portlet portal portlet portal    <!--[if !vml]--><!--[endif]-->

Portlets portlet Portlet portlets portlet portlet portal Portal server portlet portal lt;!--[if !vml]--><!--[endif]-->

 

       portal portal portlets Portal portlet portlets Portal portlet portal <!--[if !vml]--><!--[endif]-->

Portlet Windows XWindows portlet H口状态是 portal portlet portlet portlet Portlet render Portlets action Portlet 3 normal maximized minimized Normal

Normal portlet portlet portlet

MAXIMIZED

Maximized portlet portal portlet portlet portlet Maximized portlet

Minimized

portlet minimized

Portlet porlet portlet Portlet portlet portlet portlet portlet Portlets action portlet

Portlet view edit, help config view help edit 举例来说Q一个用户可以定制的股票信息PortletQ?span lang="EN-US">View模式允许用户查看股票列表Q?span lang="EN-US">Help模式提供l用户帮助手册,Edit模式允许用户定制自己x(chng)的股列表,?span lang="EN-US">Config模式允许理员改变股服务的一些配|?span lang="EN-US">

VIEW  

模式期待的功能是产生标记反映当前的状态给portlet。例如,view模式?span lang="EN-US">portlet包含1个或多个框,用户可以操作或交互,或组成不需要Q何用户交互的的静(rn)态内宏V?span lang="EN-US">

开发者需要通过覆盖doViewҎ(gu)实现view portlet模式的功能?span lang="EN-US">

EDIT  

edit模式Q?span lang="EN-US">portlet提供内容?span lang="EN-US">logic让用L(fng)户化portlet的行为?span lang="EN-US">Edit模式包含一个或多个框,用户可以定位q输入他们的用户化数据?/span> edit模式Q将讄或修?span lang="EN-US">portlet的参数?span lang="EN-US">Portlet开发者需要通过覆盖doEditҎ(gu)实现edit portlet模式的功能?span lang="EN-US">

HELP

当在help模式Q?span lang="EN-US">portlet提供portlet?span lang="EN-US">help信息。这?span lang="EN-US">help信息会(x)是简单的框,用连贯的正文或上下文敏感的帮助阐明了(jin)整个portlet?span lang="EN-US">Portlet开发者需要通过覆盖doHelpҎ(gu)实现help portlet模式的功?span lang="EN-US">

CONFIG

当在config模式Q管理员可以q行相应的操作?/span> Portlet开发者需要通过覆盖doConfigҎ(gu)实现view portlet模式的功能?/p>

因ؓ(f)Portletl承?span lang="EN-US">Servlet,所?span lang="EN-US">portlet可以打包?span lang="EN-US">war文g发布?span lang="EN-US">Portal容器中。管理员可以发布或者卸?span lang="EN-US">portlet。在一?span lang="EN-US">Portlet Web 应用中,一?span lang="EN-US">portlet描述文g用来描述portlet的属性和初始化信息。一?span lang="EN-US">Portlet定义包含一?span lang="EN-US">application portlet和多?span lang="EN-US">concrete portlet。一?span lang="EN-US">Application Portlet?span lang="EN-US">portlet容器中仅存在一个实例。一?span lang="EN-US">concrete Portlet实例一个用额外的数据实例化的portlet?span lang="EN-US">



Eric.Zhou 2007-01-23 09:42 发表评论
]]>什么是PortalQPortal用来做什么,Z么要用PortalQ?http://www.aygfsteel.com/rain1102/archive/2007/01/22/95373.htmlEric.ZhouEric.ZhouMon, 22 Jan 2007 09:09:00 GMThttp://www.aygfsteel.com/rain1102/archive/2007/01/22/95373.htmlhttp://www.aygfsteel.com/rain1102/comments/95373.htmlhttp://www.aygfsteel.com/rain1102/archive/2007/01/22/95373.html#Feedback1http://www.aygfsteel.com/rain1102/comments/commentRss/95373.htmlhttp://www.aygfsteel.com/rain1102/services/trackbacks/95373.htmlPortalQ中文字意:(x)门户。在如今的网l时代,q是一个容易让Z生敬畏的词。因?#8220;门户”QL联想到yahoo、sina 之类的大型门L(fng)点,它们因ؓ(f)提供大量l合分类的信息且易于(g)索而受Ch们的Ƣ迎?br />      许多企业和组l同样需要类似功能的门户技术。他们同旉要ؓ(f)企业内部员工、外部客L(fng)体量w定制有“价?#8221;的企业信息,令企业倍感头痛的是Q一斚w是好些有“价?#8221;的企业信息获取ƈ不是一件轻杄事情Q信息部门需要整合来自不同的应用pȝQ不同数据源Q不同^台的无数各种cd的数据和资源Q另一斚wQ如何轻村֮C个ؓ(f)所有的用户体量n定制的系l构架也不是一件容易的事情。传l技术整合这些资源的技术复杂度和成本都太高Q许多企业无法负担如此的投入?br />Protal 技术的出现Q带lh们解册c难题的曙光。Portal技术强调以用户Z?j),重视程及(qing)整体工作效能,提供l一登陆界面Q实C息的集中讉K。Portal 创徏一个提供支持信息访问、传递,以及(qing)跨组l工作的集成化商务环境?br />      Protal它不仅要把企业的后端内容表现出来,它还要把企业U的后端的应用表现出来。对于企业来_(d)Portalq不仅仅是发布几个新闻,它真正是Z(jin)处理业务用的。无论是企业客户q是员工Q只要登录进PortalQ将能够q入对应的业务系l,真正的去完成业务功能。那么这L(fng)话,对于企业来说QPortal 成Z个真正的“企业U?#8221;门户?br />      Z企业UPortal有IBM websphere PortalQSun ONE PortalQBea WebLogic Portal四大产品?/div>
 
从技术方面讲Q主要是体现Q?br />  个性化
  各种讑֤的支?br />  与后台系l的集成
  内容发布
  商务规则
  重中之重Qؓ(f)Single Sign On
 



Eric.Zhou 2007-01-22 17:09 发表评论
]]>
谈Portal技?http://www.aygfsteel.com/rain1102/archive/2007/01/22/95372.htmlEric.ZhouEric.ZhouMon, 22 Jan 2007 09:03:00 GMThttp://www.aygfsteel.com/rain1102/archive/2007/01/22/95372.htmlhttp://www.aygfsteel.com/rain1102/comments/95372.htmlhttp://www.aygfsteel.com/rain1102/archive/2007/01/22/95372.html#Feedback0http://www.aygfsteel.com/rain1102/comments/commentRss/95372.htmlhttp://www.aygfsteel.com/rain1102/services/trackbacks/95372.html 1.               概述

一词最早是指门L(fng)站。简单讲 是一个重要的 站点Q是一个联合的C֌Q?/span> ?/span> 作ؓ(f) Web 应用E序?/span> ?/span> l一的访问点和信息系l的展现层,通过个性化“我的主页Q?/span> Q?#8221;Z同用h供个性化、统一d和内Ҏ(gu)合的服务。此?/span> Portal q提供了(jin)许多有h(hun)值的附加功能Q如安全性、搜索、协作和工作等。对最l用戯(g)言Q?/span> 是一个到所有计资源的单独讉K炏V业界认?/span> Portal 会(x)成ؓ(f)下一代的桌面Q在 Web 上ؓ(f)各种客户备提供大量的?sh)子商务应用?/span>

2.               发展历程

最初的 Portal 指的是像 Yahoo ?/span> Sina q样?/span> Internet 门户|站。这些门L(fng)站ؓ(f)用户提供?jin)检索、分cdcM My Yahoo! 的个性化定制服务Q目的是帮助用户更快地找到自己所需要的信息。这L(fng) Portal 被称?/span> Public Portal Q即面向公众的信息门戗?/span>

随着 Web 应用的发展,又出C(jin) Vertical Portal ?/span> Enterprise Information Portal ?/span> Vertical Portal 卌业门P目的是帮助某一行业的商业h员和技术h员找到自已需要的特定行业的商业信息和技术信息?/span> Enterprise Information Portal Q?/span> EIP Q?/span> 即企业信息门戗目的是帮助企业用户?qing)员工通过l一入口扑ֈ分布于企业的各种信息。与 Public Portal 怼Q?/span> Vertical Portal ?/span> EIP 也同h供了(jin)(g)索、分cd个性化定制服务?/span>

在以上三U?/span> 中, 包含的内Ҏ(gu)多,因此Q?/span> 的发展过E也?/span> 中得C(jin)最充分的体现。在 发展的最初阶D, 实际上就是一些静(rn)态网,用户通过它获得企业提供的信息?qing)服务。随着信息量的增加Q逐渐增加?jin)搜索功能和内容发布功能Qƈ一定程度上实现?jin)内容管理?/span> Q;融入?jin)工作流Q渠道(包括 Q的功能Q集成了(jin)更多应用Q如 Q?/span> Q?/span> {;增加?/span> 引擎。下面ؓ(f) 在企业应用里的结构图 摘自?/span> 相关资料 Q?/span>

图:(x) Portal 在企业信息化中扮演的角色

3.               现状

技术与应用服务器紧密结合,加强?jin)高U的个性化功能Q发展成为应用服务器之上的管理客戗员工和合作伙伴应用的一个框架?/span> 作ؓ(f)应用服务器之上的面向企业应用集成的品里的必不可的l成部分Q在企业信息化方面扮演着重要的角艌Ӏ各大应用服务器厂商也纷UhZ(jin)自己?/span> 产品Q比较著名的?/span> Q?/span> Q?/span> Q同时也有同cd源品,?/span> Q?/span> {?/span>

4.              

著名咨询公司 Gartner 不久?/span> 提出?jin)应用^台套?/span> (Application Platform Suites Q简U?/span> APS) 的概c(din)根?/span> Gartner 的定义, APS ׃批基软gl装而成Q这些基软g提供?jin)创Z业应用所需的架构,臛_必须包括应用服务器?/span> Portal 产品和企业应用集成包{?/span> IDC 通过对众多企业信息主的调查发现Q他们最兛_(j)的问题是如何实现企业应用的整合,以及(qing)如何构徏l一的企业信息门户^台等。厂商对企业用户的这些需求,仅仅提供一个应用服务器是远q不够的Q而需要提供一整套能够使企业有效和灉|地徏立信息系l的工具和Y件^収ͼ把应用开发^台和应用集成q_有机地结合v来?/span>

ȝ来看Q?/span> 作ؓ(f)未来企业信息用户q_的一个重要组Ӟ随着应用服务器的发展Q也得到长的发展和进步?/span>



Eric.Zhou 2007-01-22 17:03 发表评论
]]>
վ֩ģ壺 Ϫ| ͬ| ͭϿ| ²| ƽ| ̨| | ͼʲ| | ɽ| | Ϻ| | Զ| Ԫ| | ׿| ǰ| ¤| Ӣ| | ƽ| Ȫ| | | | | | | | ̨| | ̺| | Ͻ| | | »| ï| | ʯʨ|