Portal对象
1、request
portal中的request分为Action Request 和 Render Request两种类型。
因此Portlet接口定义了两种方法分别处理不同的Request
processAction(ActionRequest request,ActionResponse response) 和 render(RenderRequest request,RenderResponse response)
从某种意义上讲render方法类似与Servlet中的service方法,doView doEdit doHelp 有类似与doGet doPost方法
A、portletRequest分为RenderRequest 和 ActionRequest ,分别有renderURL和ActionURL来触发
actionURL适用于确实的action(行为)情况下。比如:表单提交后Persistent状态的改变,session的改变,perference的修改等等。
renderURL通常使用处理Porlet的导航。
ActionURL举例:
<%
PortletURL pu = renderResponse.createActionURL();
pu.setParameter("Action","Login");
%>
<form name="form1" method="post" action="<%=pu.toString()%>">
RenderURL举例:
<%
PortletURL pu = renderResponse.createRenderURL();
pu.setParameter("page",number);
%>
<a href="<%=pu.toString()%>">下一页</a>
B、renderURL和actionURL的处理方式
当客户端请求是一个renderURL触发的时候,Portal服务器会调用该Protal页面所有的Porlet的render方法
当客户端请求的是一个actionURL触发的时候,Portal服务器会调用该页面所有的Porlet的processAction方法,
然后再调用render方法。
C、RenderRequest 和 ActionRequest的parameter参数作用范围
当客户端请求一个actionRequest触发时,所有parameter参数的取得都必须在processAction方法中处理。
如果要在renderRequest获取该参数,必须
String str = req.getParameter("Action")
response.setRenderParameter("Action"str)
2、response对象
Response对象也有两种:RenderResponse和ActionResponse,分别用来封装对应的RenderRequest和ActionRequest的返回信息
他们的父类PorletResponse拥有setPorperty 和 getPorperty两个方法用来传递信息给Portal容器。
ActionResponse主要用来处理以下功能:
A、重定向
B、改变窗口状态、Portlet模式
C、传递parameter参数到RenderRequest中
RenderResponse主要处理:
A、设置ContentType
B、得到OutputStream 和 Writer 对象,用来输出页面内容
C、Buffering缓冲
D、设定Portlet的标题,但是必须在Portlet输出前调用,否则别忽略
3、PortletConfig对象
和ServletConfig对象相似,PortletConfig对象提供对Portlet初始化信息及PortletContext对象存取的方法
和ServletConfig d对象不同的是,PortletConfig对象提供对Porlet的标题等资源的I18N支持,可以通过设定不同的Resource
Bundle文件以提供多种语言支持
4、Portal的Session
Portal的Session分为Applicaton Scope 和Portlet Scope 而至区别:
A、Application Scope范围的Session中保存的对象,对于同一个Portal应用范围的所有Portlet都是可用的
B、Porlet Scope范围的Session中保存的对象,只对本Porlet可用,其他Portlet即使在同一应用中,也不可用。
5、Preference对象
Preference对象被设计用来实现用户的个性化设置,可以帮助用户对Portlet进行符合用户需求的显示定制和行为定制,
可以替代部分的数据库功能。更需要指出的是,Preference对象只是用来存取简单的配置信息,并不能完全替代数据库应用。
Preference对象对于配置信息采用键值的形式存取,用户可以将需要的信息暂时保存在Preference中。
举例:
PortletPreference p = req.getPortletPreferences();
p.setValue("username","zhangzunwei");
p.store();
Perference
对性用来存取用户的个性化信息,所以不同用户的Preference对象不能共享。
可以在portlet.xml中配置Preference信息:
<portlet-preferences>
<preference>
<name>username</name>
<value>zhangzunwei</value>
<read-only>true</read-only>
</preference>
</portlet-preferences>
另外,还可以配套使用PreferencesValidator对性,对Portlet的Preference在存贮之前进行验证,保证数据稳定性。