怎样利用jetspeed进行2次开发

如题所述

第1个回答  2015-11-24

  jetspeed 二次开发:Portlet应用开发

  一、portal

  Portal是一种基于web的应用,通常用来提供个性化、单点登陆、内容集合、信息系统表现层。其中,内容集合指把不同源头的内容整合成一个网页。Portal可提供高级的个性化功能,可以让用户定制自己需要的内容。这样的portal页面对不同的用户有不同的portlet集合。

  Portal页面结构如下所示:


  上图所示的portal页面有四个portlet窗口。通过个性化定制,用户可以改变自己的portal页面中portlet的布局,还可以向自己的portal页面中增加portlet或将portlet从中移除。

  

  二、portal工作流程概述

  Portal页面的生成:

  

  Portal页面请求过程:①用户使用浏览器访问portal页面。②收到请求后portal服务器根据用户的个性化信息确定需要的portlet,③然后通过portlet容器调用这些portlet。④Portal服务器用portlet生成的网页片段建立portal页面,⑤发送给用户。(其中角色参考上图)

  

  三、部署ASOPortal

  a.      安装MySQL数据库。将MySQL压缩包解压缩到硬盘,进入bin目录,运行winmysqladmin.exe,任务栏中出现绿灯说明MySQL服务已启动。

  b.      安装JDK和tomcat服务器。

  c.      将ASOPortal压缩包解压到tomcat的webapps/asop目录中,将WEB-INF/src/sql/asop.sql复制到MySQL的bin目录下,用命令行方式进入该目录执行“mysql-uroot<asop.sql”。

  d.      启动tomcat,浏览http://localhost:8080/asop/config,在数据库配置页面中修改Url为jdbc:mysql://localhost/asop?useUnicode=true&characterEncoding=UTF-8。浏览http://localhost:8080/manager/html,在Applications栏目中找到asop,点击它右面的Reload链接重新启动该应用以使新配置生效。看到Message栏中出现“OK - Reloaded application at context path /asop”表示成功。

  e.      浏览http://localhost:8080/asop/进入ASOPortal系统。

  

  四、portlet应用基础

  ASOPortal系统portlet执行机制:(参考第七部分例程)

  a.渲染(render)请求和操作(action)请求:渲染请求会使portlet显示最初的默认页面。当显示一个portal页面时portal服务器触发该页面中所有portlet的渲染请求。当在portal页面的某个portlet中提交表单或点击操作请求链接时,portal服务器会触发该portlet的操作请求,并触发同一portal页面中其它portlet的渲染请求。


  b.收到渲染请求,portlet容器根据.xreg文件中的portlet注册信息找到被请求的portlet的Action类,调用它的buildNormalContext方法,之后重定向到注册信息中指定的模板(jsp)。

  c.收到操作请求,portlet容器根据名为js_peid和eventSubmit_doXxxx的请求参数调用相应portlet的Action类的doXxxx方法, setTemplate方法指定重定向去的模板(jsp)。js_peid请求参数在后面介绍。

  d.注意:①在buildNormalContext方法和doXxxx方法中均可用request对象的setAttribute方法将动态内容保存到request对象中,在之后的jsp模板中用request对象的getAttribute方法取得该动态内容并显示。②若未在Action的doXxxx方法中调用setTemplate,则方法完成后重定向去该portlet上一次使用的模板。

  编写ASOPortal系统的portlet应用建议步骤:①编写Jsp页面,②编写Action类和相关的实体类和DAO,③注册到.xreg文件中。

  Jsp模板文件要放在WEB-INF/template-asop/jsp/portlet/html目录下,这是由配置文件TurbineResources.properties中的

  services.JspService.templates=/WEB-INF/templates-asop/jsp

  和JetspeedResource.properties中的

  services.TemplateLocator.templateRoot=/WEB-INF/templates-asop

  决定的。(TurbineResources.properties和JetspeedResource.properties在WEB-INF/conf下)

  用于portlet的jsp中使用asop标签<template:dynamicUri/>来生成portlet请求URL。在提交请求时需要包含js_peid参数。(参见第七部分例程)

  应用的Action类统一放到com.aerostrong.asop.portal.portlet.act

  ions包中为每个应用建立的子包里,这是由TurbineResource.properties中的module.packages=com.aerostrong.asop.portal.portlet 决定的。Action的方法中对request的操作(如getAttribute、setAttribute等)需要首先取得request对象,方法是调用作为参数传入的RunData实例的getRequest方法;对request参数的取得可使用RunData实例的getParameters().getXXX()方法,其中getXXX可以是getString、getInt、getDate等方法。(参见第七部分例程)

  .xreg文件的名称理论上可以随意,为方便管理我们统一使用appName-portlet.xreg,其中appName为应用系统的名称。.xreg文件是xml格式的,注册portlet的方法就是给其中的registry元素增加一个portlet-entry字元素,具体参见第七部分例程。.xreg文件需要用UTF-8字符集保存。

  五、最简单的开发环境

  ASOPortal系统现已配有Ant构建文件WEB-INF/build.xml,可使用EditPlus、UltraEdit等文本编辑器编写Action类和jsp页面,修改xreg文件,之后用命令提示符模式在asop的WEB-INF目录下执行ant命令来编译。可用的命令有ant——只编译更新过的类,ant clean——清除所有已编译的文件,ant all——清除已编译的文件并全部重新编译。

  使用该方法需要安装配置Ant编译工具。方法是解压缩Ant到硬盘上,设置环境变量ANT_HOME为Ant解压缩出来的目录,添加%ANT_HOME%/bin到PATH环境变量中。

  .xreg文件修改或类编译后都需要重新启动应用才会生效。可通过访问http://localhost:8080/manager/html,点击Applications栏目中asop右边的Reload来重启应用。

  六、配置JBuilder开发环境

  习惯使用Jbuilder环境开发的同志可参考以下步骤设置Jbuilder。

  a. 在Jbuilder中点击菜单中的File->New->Project for Existing Code。

  b. 将Directry设置为asop的WEB-INF目录,name设为ASOPortal,点击Next进入下一步。

  c. 设置Output path为asop的WEB-INF/classes,Backup path和Working path不作要求;下面的source页中default设为WEB-INF/src/java;Required Libraries页中点击Add,在新弹出的窗口中点击New,在新弹出的窗口中设置Name为ASOPortal,点击Add,选中asop的WEB-INF/lib和WEB-INF/buildlib目录下的所有jar点击OK,选中ASOPortal点击OK。点击finish完成。

  d. 开发时使用Jbuilder编写Action类,用自己习惯的工具编写jsp页面并保存到前面介绍的文件夹中,手动修改.xreg文件。.xreg文件修改或类编译后需要重新启动应用才会生效。可通过访问http://localhost:8080/manager/html,点击Applications栏目中asop右边的Reload来重启应用。

  

  七、例题:

  WEB-INF/conf/AppDemo-portlet.xreg(必须用UTF-8字符集保存)


  <?xml version="1.0" encoding="UTF-8"?>

  <registry>

  <portlet-entry name="AppDemo" hidden="false"

  type="instance" parent="JSP" application="false">

  <meta-info>

  <title>简单应用</title>

  <description>应用portlet示例</description>

  </meta-info>

  <classname>org.apache.jetspeed.portal.portlets.JspPortlet</classname>

  <parameter name="template" value="appdemo/appDemo.jsp"

  hidden="true" cachedOnName="true" cachedOnValue="true"/>

  <parameter name="action" value="appdemo.AppDemoAction"

  hidden="true" cachedOnName="true" cachedOnValue="true"/>

  <media-type ref="html"/>

  <url cachedOnURL="true"/>

  <category group="Jetspeed">测试</category>

  </portlet-entry>

  <portlet-entry>

  ……

  </portlet-entry>

  </registry>

  


  WEB-INF/template-asop/jsp/portlets/html/appdemo/appDemo.jsp


  <%@ page contentType="text/html; charset=GB18030" %>

  <%@ taglib uri=" prefix="template" %>

  <%@ taglib uri=" prefix="c" %>

  <%@ taglib uri=" prefix="fmt" %>

  今天是:<fmt:formatDate dateStyle="FULL" value="${today}"><br>

  <form action="<template:dynamicUri/>" method="post">

  <input type="hidden" name="js_peid" value="<c:out value='${js_peid}'>"/>

  您的姓名:<input type="text" name="user_name"/>

  <input type="submit" name="eventSubmit_doWelcome" value="提交"/>

  </form>

  


  WEB-INF/src/java/com/aerostrong/asop/portal/portlet/actions/demo/AppDemoAction.java


  package com.aerostrong.asop.portal.portlet.actions.appdemo;

  

  import org.apache.jetspeed.modules.actions.portlets.JspPortletAction;

  import org.apache.jetspeed.portal.Portlet;

  import org.apache.turbine.util.RunData;

  import org.apache.commons.logging.Log;

  import org.apache.commons.logging.LogFactory;

  

  public class AppDemoAction extends JspPortletAction {

  private static Log log = LogFactory.getLog(AppDemoAction.class);

  

  protected void buildNormalContext(Portlet portlet, RunData runData) {

  log.trace("in");

  runData.getRequest().setAttribute("today", new java.util.Date());

  }

  

  public void doWelcome(RunData runData, Portlet portlet) {

  log.trace("in");

  String name = runData.getParameters().getString("user_name");

  runData.getRequest().setAttribute("userName", name);

  setTemplate(runData, "appdemo/appDemoWelcome.jsp");

  }

  }

  


  WEB-INF/template-asop/jsp/portlets/html/appdemo/appDemoWelcome.jsp


  <%@ page contentType="text/html;charset=GB18030" %>

  <%@ taglib uri=" prefix="template" %>

  <%@ taglib uri=" prefix="c" %>

  欢迎您,<c:out value="${userName}"/><br>

  <a href="<template:dynamicUri/>?js_peid=<c:out value='${js_peid}'/>">返回</a>

  


  WEB-INF/conf/TurbineResources.properties


  services.JspService.templates =/WEB-INF/templates-asop/jsp

  module.packages=com.aerostrong.asop.portal.portlet

  


  WEB-INF/conf/JetspeedResources.properties


  services.TemplateLocator.templateRoot=/WEB-INF/templates-asop

  

第2个回答  2010-08-02

首先先安装,其次你下个资料。慢慢研究,在demo基础上改就可以。上边地址是资料

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网