﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-菠萝三国-文章分类-portal</title><link>http://www.blogjava.net/boluobn/category/24898.html</link><description>大江东去,浪淘尽...</description><language>zh-cn</language><lastBuildDate>Mon, 13 Aug 2007 15:22:17 GMT</lastBuildDate><pubDate>Mon, 13 Aug 2007 15:22:17 GMT</pubDate><ttl>60</ttl><item><title>什么是Portal</title><link>http://www.blogjava.net/boluobn/articles/136380.html</link><dc:creator>菠萝</dc:creator><author>菠萝</author><pubDate>Mon, 13 Aug 2007 06:45:00 GMT</pubDate><guid>http://www.blogjava.net/boluobn/articles/136380.html</guid><wfw:comment>http://www.blogjava.net/boluobn/comments/136380.html</wfw:comment><comments>http://www.blogjava.net/boluobn/articles/136380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/boluobn/comments/commentRss/136380.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/boluobn/services/trackbacks/136380.html</trackback:ping><description><![CDATA[Portal是一个基于web的应用程序，它主要提供个性化、单点登录、不同来源的内容整合以及存放信息系统的表示层。<br><br>什么是Portlet?<br>Portlet是基于java技术的web组件，它由portlet容器管理、并处理请求，并动态生成输出内容。<br><br>Portlet的输出是一个片段，即不是一个完整的页面。<br><br>Portal标准<br>为规范Portal，SUN于2003年底制定了JSR168，它定义了portlet标准，并给出了一个实现接口。<br><br>Portlets与Servlet的异同？<br>相同点<br>基于web应用的java技术<br><br>由特定的容器管理<br><br>动态生成内容<br><br>生命周期由容器进行管理<br><br>通过request/reponse进行交互<br><br>不同点<br>portlet只生成片段<br><br>portlet并不直接绑定到某一个URL上<br><br>portlet通过portal进行交互<br><br>portlet可以多次在同一个portal页面上同时出现<br><br>portlet优点<br>能访问到用户配置信息<br><br>能在不同的域中存储会话：应用程序级到私有级。<br><br>portlet与servlet的关系<br>前者能调用后者，并且能共享信息，包括：Attributes<br><br>portlet容器是servlet容器的扩展<br><br>portlet无法做到的事情<br>设置response的字符集编码<br><br>设置http header<br><br>获取客户端的request<br><br>Portlets实例<br>如果是在普通的场合下使用，即不是在分布式场合，则每个portal应用就会生成一个portlet实例。而如果是在分布式场合下使用的话，则每个jvm只有一个实例。<br><br>Portlet生命周期<br>Portlet接口的四个方法构成一个完整的生命周期：init, processAction,render,destroy<br><br>public void init(PortletConfig config) throws PortletException;<br><br>由portlet容器调用，在将portlet放入服务区前调用。portlet容器在初始化portlet后，直接调用这个方法。<br><br>public void processAction (ActionRequest request, ActionResponse response)<br><br>&nbsp;&nbsp;throws PortletException, java.io.IOException;<br><br>由portlet容器调用，用来处理action request。<br><br>public void render (RenderRequest request, RenderResponse response)<br><br>&nbsp;&nbsp;throws PortletException, java.io.IOException;<br><br>由portlet容器调用，用来生成输出。<br><br>public void destroy();<br><br>将portlet从服务区中删除。<br><br>Portlet URLs<br>如何生成Portlet URL<br>RenderResponse.createActionURL<br><br>RenderResponse.createRenderURL<br><br>调用setParameter、setParameters可以用来设置参数.<br><br>如何使用Portlet URL<br>开发者不可以对参数进行任何编码，它(编码)是由portlet容器进行的。见下面例子：<br><br>&nbsp;&nbsp;&nbsp; PortletURL url = response.createRenderURL();<br><br>&nbsp;&nbsp;&nbsp; url.setParameter(&#8220;customer&#8221;,&#8221;foo.com&#8221;);<br><br>&nbsp;&nbsp;&nbsp; url.setParameter(&#8220;show&#8221;,&#8221;summary&#8221;);<br><br>&nbsp;&nbsp;&nbsp; writer.print(&#8220;Summary&#8221;);<br><br>portlet URL可以包含portlet的模式及窗口的状态，见下面例子：<br><br>&nbsp;&nbsp;&nbsp; PortletURL url = response.createActionURL();<br><br>&nbsp;&nbsp;&nbsp; url.setParameter(&#8220;paymentMethod&#8221;,&#8221;creditCardInProfile&#8221;);<br><br>&nbsp;&nbsp;&nbsp; url.setWindowState(WindowState.MAXIMIZED);<br><br>&nbsp;&nbsp;&nbsp; writer.print(&#8220; &#8221;);<br><br>setSecure方法用来设置是否是https&nbsp;
<img src ="http://www.blogjava.net/boluobn/aggbug/136380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/boluobn/" target="_blank">菠萝</a> 2007-08-13 14:45 <a href="http://www.blogjava.net/boluobn/articles/136380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>