怎样利用jetspeed进行2次开发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样利用jetspeed进行2次开发相关的知识,希望对你有一定的参考价值。
参考技术Ajetspeed 二次开发: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="http://www.aerostrongsoft.com.cn/asop/portal/tags-template" prefix="template" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" 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="http://www.aerostrongsoft.com.cn/asop/portal/tags-template" prefix="template" %>
<%@ taglib uri="http://java.sun.com/jstl/core" 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
参考技术B http://wenku.baidu.com/view/2653a9bd960590c69ec3767b.html
首先先安装,其次你下个资料。慢慢研究,在demo基础上改就可以。上边地址是资料
怎样学习用C++进行cad二次开发?
我是学测绘工程的,想在明年做有关的毕业设计,cad会用,c语言会,c++看了一下初级教材,就是钱能的那本。还不太会
C++对AutoCAD的二次开发主要引用AutoCAD发布的函数库,也就是SDK。AutoCAD有针对C++的编程模型,你可以用AutoCAD发布的C++函数库来操作该模型,最后编译生成arx文件文件,在arx文件里面有注册AutoCAD命令的语句,然后在AutoCAD里面加载编译生成的arx文件或dll,AutoCAD系统就会自动加载在arx文件注册的命令,在AutoCAD命令行输入该命令名就可以执行该命令了。 参考技术A AutoCAD二次开发用Autolisp容易一点。专用的二次开发语言
下载本书看看
去论坛逛逛
蓝天CAD论坛不错
AutoCAD二次开发做的不错
自己多练就会了 参考技术B cad里面是坐标关系,也就是XYZ三轴,然后C语言编辑数学关系,利用公式画图.其实CAD自带了一种语言就是用来2次开发的,看看帮助里面应该能掌握的` 参考技术C .......楼主最好说下自己的基础,目的,专业,不然这个东西说来话长。
我自己做过1年多的proE二次开发,有些朋友做CAD二次开发。
你先说说你的专业吧,软件专业和模具专业的人学习的方法很不一样。 参考技术D CAD二次开发最好看在线直播课程,学得快些,腾讯课堂好像有这方面的直播课程。
以上是关于怎样利用jetspeed进行2次开发的主要内容,如果未能解决你的问题,请参考以下文章