热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Eclipse中使用Pluto开发portlet

[pre]使用EclipseplusPluto开发你的第一个与JSR168兼容的PortletByTerry.liSpiritSeekerSsqatester.com[pre]
[pre]使用Eclipse plus Pluto开发你的第一个与JSR168兼容的Portlet

By Terry.li

SpiritSeekerS@sqatester.com[/pre]



本文将介绍开发基于Portlet Specification v1.0 (JSR168) 的Portlet应用.  

我们使用Pluto作为Portlet Container和Portal. 同时可以将开发的Portlet应用迁移到任何支持JSR168的Portlet Container上.



·    为什么要发布Portlet Specification? 什么是JSR168? 

由于越来越多的公司开发了各自的Portal组件和基于其的Portal产品(如Bea, IBM, Oracle, Sun, Sybase, Novell, SAP, Jetspeed, Vignette 等.这种互不兼容的接口实现不断带给程序提供商各种问题和麻烦, 为了解决这种问题, JCP发布了JSP168 (Java Specification Request), Portlet Specification, 用以提供不同Portal和Portlets之间的互用性



·    什么是Portal?

Portal是基于WEB的应用程序, 它将不同资源进行整合并展现给用户

通常其有如下三个特点:



a.    Personalization (个性化) 

b.    Single sign on (单点登陆)

c.    Content aggregation (内容聚合) 



其中Content aggregation指的是将不同来源的信息整合到一个页面中用来让用户更方便的进行使用. 

比如, 如果某客户需要进行一次商业采购,以往需要访问不同的供应商的主页得到相关信息, 但如果使用Portal将所有不同的货物供应商的商品catalog页面都整合到一个Catalog Portal页面中, 那么所有的商品信息都可以更快的进行浏览,筛选和定货, 加快了客户的商业运作效率.



·    什么是Portlet?

Portlet是一种基于WEB组件的JAVA技术, 由Portlet Container进行管理. 处理请求并动态返回页面, 可以做为Portal 的可拔插的用户界面组件.

 

·    什么是Portlet Container? Portlet Container用来管理Portlet的生命周期并且提供其运行所需要的必要环境. 并且为Portlet Preferences提供持久性(Persistent)存取服务.但是其不支持内容的Aggregation. Aggregation由Portal组件提供.



注: Portlet Preferences是Portlet的一个新特性,提供类似数据库的功能.但是不是用来取代数据库. 只是用来存取简单的Portlet参数配置.

        

·    什么是WSRP?

WSRP 是 OASIS Web Service for Remote Portlets的缩写. WSRP主要用来简化Portal对于各种资源或者程序的整合的复杂性, 可以避免编程带来的整合的复杂性. 并且Portal的管理员可以从大量的服务中选择需要的用以整和到Portal中. 





·    Portlet and Servlet



摘自(Portlet Specs v1.0)



相同点:

• Portlets are Java technology based web components

• Portlets are managed by a specialized container

• Portlets generate dynamic content

• Portlets lifecycle is managed by a container

• Portlets interact with web client via a request/response paradigm



不同点:

• Portlets only generate markup fragments, not complete documents. The Portal aggregates portlet markup fragments into a complete portal page

• Portlets are not directly bound to a URL 

• Web clients interact with portlets through a portal system

• Portlets have a more refined request handling, action requests and render requests

• Portlets have predefined portlet modes and window states that indicate the function the portlet is performing and the amount of real state in the portal page

• Portlets can exist many times in a portal page



Portlet特有:

• Portlets have means for accessing and storing persistent configuration and customization data

• Portlets have access to user profile information

• Portlets have URL rewriting functions for creating hyperlinks within their content, which allow portal server agnostic creation of links and actions in page fragments

• Portlets can store transient data in the portlet session in two different scopes: the application-wide scope and the portlet private scope



 Servlet特有:

• Setting the character set encoding of the response

• Setting HTTP headers on the response

• The URL of the client request to the portal

  

·    什么是Pluto ?

        Pluto 是 Apache开发下的一个Open Source项目, 是基于Portlet Specs的一个 Portlet Container 的实现. 它也提供了Sample Portal实现. 但是功能相对简单:



      例如,

      1) 没有复杂的Layout实现.

      2) 不是multi-user enabled, 比如, 不同User之间的Portlet Preferences互相是可以share的.   



     请记住Pluto只是一个Portlet Container的实现, 不是一个Portal的实现. 如果你需要功能更为强大的Portal,可以使用JetSpeed , 它同样也是Apache的一个Open Source Project. 请参考文章末尾的资源部分.



·    概念 

      如图: Figure 1.1

a.    Decorations and controls (修饰部分及 控制部分)

b.    Portlet fragment (Portlet 片段)

c.    Portlet window (Portlet 窗口)

d.    Portlet page (Portlet 页面)




 

 

Figure 1.1



·    开发工具( Eclipse2.1, Pluto-plugin, Jakarta-tomcat-4.1.29)

下载地址:

Eclipse

http://www.eclipse.org/downloads/index.php



Pluto-plugin

http://prdownloads.sourceforge.net/plutoeclipse/org.eclipsefan.pluto.ui_1.0.0.zip?download



Tomcat4.1

http://mirrors.midco.net/pub/apache.org/jakarta/tomcat-4/v4.1.29/bin/jakarta-tomcat-4.1.29.zip



JDK1.4

http://Java.sun.com



·    配置开发环境

       Step1 :  解压eclipse-SDK-2.1.1-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



        Step3:  解压tomat4.1到一目录. 并且配置好Tomcat服务器.    

        Congratulations, It’s done!



a. 使用Portlet Wizard 来创建Portal

1) 选择File > New > Project… > Portal > Pluto Portal application, 单          击Next, 如图:


  

Figure 1.2



2) 指定Project名称 (如图1.3), 这里使用pluto, 然后单击Next.


  

Figure 1.3









3) 指定Tomcat路径, 单击Finish.  之后eclipse会将Pluto安装到tomcat上,并且自动配置好环境.


  

Figure 1.4









b. 创建Portlets Application





1) 创建Pluto portlet application (如图Figure 1.5)


  

Figure 1.5



        2) 输入project名称 (如图Figure 1.6), 这里用portlets


          

Figure 1.6









      c. 最后生成的工程如图 (Figure 1.7): 


 

Figure 1.7            

d. 通过portlet.xml 生成/更新 web.xml (如图Figure 1.8)


         

Figure 1.8



e. 部署 Portlets



1) 编译 portlets 工程.

2) 在 [your tomcat installation directory]/webapps下, 新建目录portlets

3) 将portlets工程下的web-root目录下所有文件, 拷入以上新建的portlets目录中.

Tip: 如果在每次修改后你厌倦了Ctrl+C 和 Ctrl+V, 你可以在Portlets工程目录下自己编一个Bat文件, 然后你可以在eclipse里的Package Explorer中看到它, 双击就可以了. 如上图(Figure 1.8): 其中deploy.bat文件就是实现其功能的.



4) Start tomcat.

5) 在IE 中输入: http://localhost: 8080/pluto/portal, 你应该能看到portal 页面.





·    Sample Portlet

在Portlets工程文件创建过程中, 自动生成许多文件, 包括一个简单的Portlet, 我们来观察一下生成的sample portlet.





1) 与Servlet非常类似, Portlet扩展自GenericPortlet

    

    import javax.portlet.*;



public class SimplePortlet extends GenericPortlet



2) 其三个方法对应了Portlet 标题栏中的三个联接 (View, Edit, Help)



public void doView(…)



public void doEdit(…)



public void doHelp(…)




 

Figure 1.9



3) 三个方法分别调用了三个JSP文件, 用以生成Portlet fragment, 同样也可以调用Servlet产生Portlet fragment. 与Servlet应用类似,也可以使用

getInitParameter(String s)方法,得到配置文件中Portlet的初始值. 只不过Servlet使用web.xml,而Portlet 使用portlet.xml文件.





portlet.xml



           

            jspView

            /jsp/view.jsp







SimplePortlet.java



String jspName = 

getPortletConfig().getInitParameter("jspView");





·    Portlet Tag library



1)defineObjects Tag



如果打开其中的一个JSP文件,你会发现,和Servlet一样,JSP中可以使用Portlet的一些variables.例如:



renderResponse

renderRequest

portletConfig



但是必须声名:



其中不可以定义任何属性或者包含任何内容.



2) actionURL Tag

属性    值类型    对应值

windowState    String    minimized, normal, maximized

portletMode    String    view, edit, help

var    String    任何值

secure    String    true,false











创建一个action URL , 当访问它时将使portlet window变为normal 装态, 模式变为 edit.



3) renderURL Tag

属性    值类型    对应值

windowState    String    minimized,normal,maximized

portletMode    String    view, edit, help

var    String    任何值

secure    String    true,false





 







创建一个render URL , 当访问它时将使portlet window变为maximized装态, 模式变为 view.

 

4) namespace Tag

为目前的Portlet产生一个唯一的Value. 防止和其他的Portlet 或者Portal页面上的value产生冲突.

doFoo()”>Foo



5) param Tag

属性    值类型

name    String



注: param Tag不可以有body content.






总结

Pluto目前是v1.0, 有部分Portlet规范没有完全实现, 例如, renderResponse.setTitle (), 同时你可以从Apache的CVS下载最新的Pluto代码, 希望这编文章可以帮大家搭建一个简单的Portlet开发环境 , 熟悉Portlet相关的知识.

 
推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • ***byte(字节)根据长度转成kb(千字节)和mb(兆字节)**parambytes*return*publicstaticStringbytes2kb(longbytes){ ... [详细]
author-avatar
Evan-ZWU_680
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有