下面的例子基本参照http://jim19770812.blogspot.com/2008/08/eclipsepluto-116portlet.html上写的。

首先,安装portlet容器Pluto。

http://apache.mirror.phpchina.com/portals/pluto/上下载。pluto-1.1.6-bundle.zip是一个已经绑定到tomcat5.5.2中的pluto,直接解压,即可使用。

启动tomcat后打开浏览器,访问http://localhost:8080/pluto就可以打开pluto了,用户名口令是pluto/pluto。

然后,开发一个输出HelloWorld字的porlet页面。

首先,编写一个实现GenericPortlet的类,重写doview方法。

package com.demo;

import java.io.IOException;

import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

public class Helloworld extends GenericPortlet {
 @Override
 protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
  response.setContentType("text/html");
  response.getWriter().println("hello world");
 }
}
然后,配置portlet.xml和web.xml两份文件
portlet.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<portlet-app version="1.0"
 xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
 <portlet>
     <!--portlet的名字-->
  <portlet-name>hello1</portlet-name>
  <portlet-class>com.demo.Helloworld</portlet-class>
  <expiration-cache>0</expiration-cache>
  <supports>
   <!--portlet的三种模式,其中view模式是必须有的,其余两种可选-->
   <mime-type>text/html</mime-type>
   <portlet-mode>view</portlet-mode>
   <portlet-mode>help</portlet-mode>
  </supports>
  <portlet-info>
   <title>你好,Portlet</title>
   <short-title>你好</short-title>
  </portlet-info>
 </portlet>
</portlet-app>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>hello1</servlet-name>
    <!--这个Servlet是用来与Pluto通讯用的,pluto通过该servlet来知道某个context是个portlet,如果没有这个servlet,portlet就没法自动注册到pluto中-->
    <servlet-class>org.apache.pluto.core.PortletServlet</servlet-class>
    <init-param>
      <!--portlet的名字必须和portlet.xml中portlet的名字一致-->
      <param-name>portlet-name</param-name>
      <param-value>hello1</param-value>
    </init-param>
    <init-param>
        <!--唯一标识,每个portlet的标识应该都不同-->
        <param-name>portlet-guid</param-name>
        <param-value>demo.hello1</param-value>
    </init-param>
    <init-param>
        <!--这个参数是告诉pluto,portlet名字所对应的类是什么-->
        <param-name>portlet-class</param-name>
        <param-value>com.demo.Helloworld</param-value>
    </init-param>
    <init-param>
        <!--这个参数的作用是在PortletServlet执行init方法时,根据charset参数获取字符集,然后在执行响应时调用response.setContentType来设置编码-->
        <param-name>charset</param-name>
        <param-value>utf-8</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>hello1</servlet-name>
    <!--映射模板必须以/PlutoInvoker开头,否则pluto识别不出来-->
    <url-pattern>/PlutoInvoker/hello1</url-pattern>
  </servlet-mapping>
</web-app>

布署
-WEB-INF  
          |-classes
             |-com
                  |-demo
                       |-Helloworld.class
          |-lib
          |-portlet.xml
          |-web.xm
最后,启动pluto
切换到pluto admin页面,这里是专门管理和部署portlet的。

网上很多文章都说需要手工修改pluto/WEB-INF/下的三个文件来部署portlet,估计那是低版本的portlet才这么干,pluto 1.1.6提供了很好的图形化界面可以实现部署的功能。

首先,要新增一个名叫test的标签页

在输入框里输入test,然后点击add page按钮,test标签页就出现了,如下图所示

下面的Portlet Applications可以向页面上添加portlet,由于先前已经在web.xml 中声明了一个hello1的servlet,并且相应参数都设置正确,所以现在在下拉框里可以选择hello1这个portlet了。如下图所示

点击添加portlet,这个portlet就添加到test标签页了。
切换到test标签页就可以看到helloword-portlet所显示的内容了,如下所示:

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐