配置开发环境
Step1 : 解压eclipse-SDK-3.2-win32.zip
Step2 : 解压org.eclipsefan.pluto.ui_1.0.0.zip , 并将其拷入eclipse\plugins目录
下, 如下: eclipse\plugins\org.eclipsefan.pluto.ui_1.0.0\
\Icon
\Lib
\Source
\Webapp
下载地址:
Pluto-plugin
http://prdownloads.sourceforge.n ... _1.0.0.zip?download
Step3 : 解压tomat5.5到一目录. 并且配置好Tomcat服务器.
配置完成.
a. 使用Portlet Wizard来创建Portal
1) 选择File > New > Project… > Portal > Pluto Portal application, 单击Next, 如图:
2) 指定Project名称 (如图1.3), 这里使用pluto, 然后单击Next
3) 指定Tomcat路径, 单击Finish. 之后eclipse会将Pluto安装到tomcat上,并且自动配置好环境
b.创建Portlets Application
b. 最后生成的工程如图并通过portlet.xml生成/更新web.xml
4.portlet技术验证。
4. 1doView(…),doEdit(…) , doHelp(…)
与Servlet非常类似, Portlet扩展自GenericPortlet .
import javax.portlet.*;
public class Textportlet extends GenericPortlet
其三个方法对应了Portlet标题栏中的三个链接(View, Edit, Help)所执行的功能.
public void doView(…)
public void doEdit(…)
public void doHelp(…)
三个方法分别调用了三个JSP文件, 用以生成Portlet fragment, 同样也可以调用Servlet产生Portlet fragment, 或者不调用JSP或者Servlet,直接在方法中得到PrintWriter,用最简单的pw.println(…)打印出内容,类似Servlet,如下:
PrintWriter pw=renderResponse.getWriter();
pw.println("Hello, Portlet!");
与Servlet应用类似,也可以使用getInitParameter(String s)方法,得到配置文件中Portlet的初始值. 只不过Servlet使用web.xml,而Portlet 使用portlet.xml文件.
4.2 Portal的设定
Tomcat 中Webapps目录: 其中pluto是portal所在目录, 用以配置Portal Page的两个文件分别是pageregistry.xml和portletentityregistry.xml
其中pageregistry.xml用来在Portal中配置Portal Page,
而portletentityregistry.xml 用来在Page中配置Portlet.
4.2.1配置同一行中的两个Portlet
Sample Portlet Basic page to show the simple portlet
4.2.2配置同一列中的两个Portlet
Sample Portlet Basic page to show the simple portlet
4.3 Portlet Modes 和 Portlet window states
· Portlet模式(Portlet Mode)是Portlet提供的用以区分 Portlet所执行功能的一个概念.通常情况下其拥有以下几种模式:
1. VIEW
2. EDIT
3. HELP
以上各模式分别对应GenericPortlet中的 doView(…) , doEdit(…) , doHelp(…) 方法,分别调用以上方法来产生各个模式中的Fragment内容. 非常类似Servlet中的doGet(…) , doPost(…) 方法,都是Helper方法, 但是概念不同.
Portlet状态(Portlet window states)提供了对于Portlet窗口的控制功能 , 其中有如下三种最基本的状态:
1. Normal
2. Maximized
3. Minimized
Portlet开发人员可以在处理ActionRequest (以后的章节将讲述其概念) 时使用代码实现Portlet模式, 及其Portlet状态的转变.
注: 只能在处理ActionRequest时改变Portlet Modes和Portlet Window state
以上Portlet Modes和Portlet window states都可以配置成custom Portlet mode和custom portlet window state. 不同的地方在于对于Mode来说, 定制化的Mode需要对GenericPortlet的doDispatch方法进行重写(Overriding), 因为GenericPortlet类通过render方法按照不同的Portlet Mode将request分别分发给doView,doEdit,doHelp等辅助方法. 如果需要定制的Mode , 必须重写doDispatch 方法. 同时如果使用Portal提供商的Portlet Modes 或者 Portlet window States,都必须在部署描述中添加相关的设定
4.4 PortletConfig 对象
· PortletConfig对象
和ServletConfig对象类似, PortletConfig对象提供Portlet初始的所需的参数及其对PortletContext对象存取提供相关方法.
和ServletConfig不同处在于, PortletConfig对象提供对Portlet Title Bar资源的I18N支持,我们可以设定不同的Resource Bundle文件用以提供多语言的支持, 如下portlet.xml文件:
… …
… …
以上Portlet描述文件中的设置用于显示Portlet的Title Bar文字, 同样也可以使用Resource Bundle用以显示Title Bar文字, 如下:
… …
portlets.portletconfig.portletconfigexample
… …
4.5 Portlet 的Request和Response对象
Portlet的Request 对象
Portlet中的Request与Servlet的Request一样接受Client端发送的Request, 但是与Servlet不同, Portlet的Request分为Action Request及Render Request两种类型,因此Portlet接口中定义了两种方法用来处理不同的Request. 分别是processAction(ActionRequest request,ActionResponse response) 和render(RenderRequest request,RenderResponse response),分别用以处理Action Request和Render Request. 某种意义上来讲,render方法类似Servlet中的service方法,doView,doEdit,doHelp方法又类似doGet,doPost方法,如下图:
RenderRequest和ActionRequest有什么不同呢?
对于Portlet来说PortletRequest分为ActionRequest和RenderRequest两种,分别是由renderURL和actionURL来触发的.可以这样理解, renderURL是actionURL的一种优化形式.Portlet开发过程中尽可能使用renderURL而避免使用actionURL. actionURL适用于有确实的Action(行为)的情况下. 比如说, form表单的递交. Persistent状态的改变,session的操作,preference的修改,这种情况下使用actionURL,而不使用renderURL, renderURL通常用来操作portlet内容的导航.
a. 使用actionURL:
<%
PortletURL pu=renderResponse.createActionURL();
pu.setParameter("ACTION","LOGIN");
…
%>