正在学习Portal中,总的来说,Portlet的概念比较简单,由于有Servlet的背景理解Portlet没有什么问题。但是由此展开的Portal的学习,(正在看的是JetSpeed2的实现。)涉及到的东西太多了。每天都有不太理解的地方。所以一点一点的的记录下来,然后验证吧。
第一个问题:如果根据Porlet规范,你会怎么实现一个Porlet容器呢?
1)Porlet是什么?Portal是什么?
规范中定义。【JavaPortaletSpecification1.0】
A portal is a web based application that –commonly- provides personalization, single sign on, content aggregation from different sources and hosts the presentation layer of
Information Systems. Aggregation is the action of integrating content from different sources within a web page. A portal may have sophisticated personalization features to provide customized content to users. Portal pages may have different set of portlets creating content for different users.
A portlet is a Java technology based web component, managed by a portlet container, that
processes requests and generates dynamic content. Portlets are used by portals as
pluggable user interface components that provide a presentation layer to Information
Systems.
The content generated by a portlet is also called a fragment. A fragment is a piece of
markup (e.g. HTML, XHTML, WML) adhering to certain rules and can be aggregated
with other fragments to form a complete document. The content of a portlet is normally
aggregated with the content of other portlets to form the portal page. The lifecycle of a
portlet is managed by the portlet container.
Web clients interact with portlets via a request/response paradigm implemented by the
portal
看到这里基本有了理解,就是Portal和Portlet 都是Web应用的概念。Portal是个特定的Web应用,有特定的功能要求,例如个性化,SSO等,而且组合Portlet提供页面内容。
最后还说了基于Request/Response的处理方式,和Servlet挺象的,看看还有什么。
2)参考Servlet
规范 【Relationship With Servlet Specification。】一章详细的介绍了相同与不同的地方。
接下来几个概念:
PortalContainer:管理Portlet的容器和管理Servlet的Tomcat功能相近
Portal 应用:一个有定制而成的Web应用。包括规范定义的基本功能。SSO portlet的组合等等。
Portlet:最简单的功能模块。和Servlet功能相近。
3)Portal的基本想法
Portlet的实现由规范定义。对于开发人员是好事,但是Portal的开发是没有规范定义的。如果要实现的话要怎么做呢?
规范提到的基本功能需求:
- Portlet的内容Aggration和显示
- Portlet的管理
- 导航
- SSO
- 个性化
- 安全相关
- 布局和画面Skin,Themes
- 其他。。。。
这里有很多的事情要做,而且这个Web应用本身又要实现一个Request/Response方式来处理Porlet。
所以肯定是从一个标准的Web应用的Servlet开始,进行处理一步一步的对功能进行分解,最终调用指定的Porlet。
从Servlet规范到Porlet规范,有很多要考虑的东西,比如:
Servlet利用的是URL对象,Portlet规范中有PortletURL。
用户访问一个Web应用通过URL把特定的信息传送到特定的Servlet。
不会传送到Porlet。所以必须提供一种方式把表示特定Portlet的PortletURL进行传递。
规范中定义的特定的JSPTag
具体怎么做呢?
4)看代码吧!