首页 | 注册 | 登陆
首页 >> 技术专栏 >> java文章 >> java基础 

Cell插件在J2EE系统中的应用(用友公司.赵继江)


作者java 来源java 加入时间:2006年03月19日
摘要:
Cell插件在J2EE系统中的应用(用友公司.赵继江)

[摘要] 在基于J2EE平台的信息系统中,具有丰富表现能力的Java Applet是界面层的一种重要形式。但Java API对打印的支持比较弱,打印输出复杂的单据和报表需要大量工作。本文介绍的系统通过引入一个ActiveX控件--Cell插件--来解决这个问题。该系统中,由Java Applet完成界面表现,由Cell插件完成打印输出,两者之间…

转载:转载请保留本信息,本文来自
http://www.51dibs.com
/html/2006/article/info11/a_a614f4080aceb5ee.htm




Cell插件在J2EE系统中的应用(用友公司.赵继江)


站点:爱心种子小博士 关键字:Cell插件在J2EE系统中的应用(用友




Cell插件在J2EE系统中的应用(用友公司.赵继江)
[摘要] 在基于J2EE平台的信息系统中,具有丰富表现能力的Java Applet是界面层的一种重要形式。但Java API对打印的支持比较弱,打印输出复杂的单据和报表需要大量工作。本文介绍的系统通过引入一个ActiveX控件--Cell插件--来解决这个问题。该系统中,由Java Applet完成界面表现,由Cell插件完成打印输出,两者之间通过Sun公司的一套接口API互相通信。

一、Java Applet与Ocx控件的交互


1.1从Java Applet访问Java Script方法和Ocx控件

Sun公司在JDK中提供了一套从Java Applet访问Java Script的API,由此可以实现Java Applet访问HTML页面中的DOM对象的机制。该API以一个Jar文件的形式提供:%JAVA_HOME%\jre\lib\jaws.jar,其中%JAVA_HOME%是你安装JDK的目录。将该jar文件加入到环境变量classpath中,就可以用它实现从Java Applet到Java Script的调用了。下面是一段调用Java Script中的方法的代码实例:
  1. import netscape.javascript.*;
  2. import java.applet.*;
  3. import java.awt.*;
  4. class MyApplet extends  {
  5.      public void init() {
  6.          JSObject win = JSObject.getWindow(this);
  7.          JSObject doc = (JSObject) win.getMember("document");
  8.          win.call("f"null);
  9.      }
}
在上面的代码中,win.call(f, null)调用了JavaScript中的方法f()。

1.2 从JavaScript访问Java Applet

当使用Java Plugin1.4.x运行Java Applet时,只需把Java Applet中的方法视为Java Plugin这个控件的方法,直接在Java Script中进行调用即可。下面用一个简单的例子进行说明:

(1) 在载入Java Plugin的Object标签中,用参数ID指定一个名字:

<OBJECT ID="MyPlunin" WIDTH=500 HEIGHT=120
CLASSID="CLSID:8AD9C840-044E-11d1-B3E9-00805F499D93">
<PARAM NAME="code" value="MyApplet.class">
...
</OBJECT>
(2) 在HTML页面上增加一个按钮,点击它时从Java Script调用Java Applet中的方法:
<input type="button" name="Button1" value="Start"
onClick="calculate" language="JavaScript">

(3) 假定你的Java Applet是MyApplet.java,它有一个public方法method1(),那么就可以用如下的Java Script代码直接调用该方法:

<SCRIPT language="JavaScript">
       function calculate() {
                       document.. MyPlunin.method1()
       }
</SCRIPT>

二、Cell插件简介

华表的Cell插件是一个功能非常类似于Excel的、用于Web开发的ActiveX控件。它可以在Windows的浏览器中显示、编辑、打印表格。

三、系统实现


1.1 系统架构

上图是系统的配置示意图。由图可见,这是一个典型的三层应用系统。在本系统中,Java Applet和Cell插件部署在Web Server上,在运行时,它们被下载到客户端,运行在浏览器中。

下图是系统的运行示意图。由图可见,运行在客户机上的Java Applet通过Web Server上的Servlet访问应用服务器上的EJB,与后台交互。Java Applet作为表示层,在客户机上显示界面。

当需要打印输出时,Java Applet将数据和显示格式设置到华表插件中,并调用华表插件的打印与览和打印方法,完成打印功能。

1.2 用Cell插件实现Java界面的打印

1.2.1在HTML页面上嵌入华表的Cell插件

为了在Applet界面中调用华表的Cell插件,我们首先在HTML页面上隐藏了一个Cell插件:

<OBJECT classid=clsid:3F166327-8030-4881-8BD2-EA25350E574A 
id=DCellWeb1   style="HEIGHT: 0px; WIDTH: 0px">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="14902">
<PARAM NAME="_ExtentY" VALUE="6075">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>

通过style="HEIGHT: 0px; WIDTH: 0px"指定Cell插件的高度和宽度都为0,从而达到隐藏Cell插件的目的。

1.2.2 在Applet中提供两个调用接口方法

下面是一个Applet的代码实例,其中提供了callCellMethod()和callJavaScriptMethod()两个接口方法,分别可用来调用Cell插件的方法和JavaScript的方法:
  1. public class MyApplet extends javax.swing. {
  2. private JSObject win = null;
  3. private JSObject cell = null;
  4. public  callCellMethod( name, [] params) {
  5.        return getCell().call(name, params);
  6. }
  7. public  callJavaScript( name, [] params) {
  8.        return getJSwin().call(name, params);
  9. }
  10. private JSObject getCell() {
  11.        if (cell == null) {
  12.               try {
  13.                      JSObject doc = (JSObject)getJSwin().getMember("document");
  14.                      JSObject all = (JSObject)doc.getMember("all");
  15.                      cell = (JSObject)all.call("item"new []{"DCellWeb1"});
  16.               }
  17.               catch ( e) {
  18.                      e.printStackTrace();
  19.               }
  20.        }
  21.        return cell;
  22. }
  23. private netscape.javascript.JSObject getJSwin() {
  24.        if (win == null) {
  25.               win = netscape.javascript.JSObject.getWindow(this);
  26.        }
  27.        return win;
  28. }
  29. }

通过getCell()这个方法,可以在Java Applet中直接获得用JSObject表示的Cell插件,从而可以直接调用它的方法。例如,在Java Applet中向Cell插件的一个单元格写入数据,可以如下调用:
  1.                row = new (1);
  2.                column = new (1);
  3.                page = new (0);
  4.               callCellMethod("SetCellString"new []{column, row, page, str});

其中SetCellString是Cell插件提供的接口方法。这样就实现了从Java Applet到华表的Cell插件的调用。

五、结论


在这个应用系统中,我们只利用Cell插件的打印预览和打印两项功能,不用它做屏幕显示。所有打印格式和数据都在Java Applet中准备好,按单元格向Cell插件设置格式和数据,由Cell插件完成分页和打印功能。

这是一种表现与数据分离的方式:Java Applet中只组织打印数据,所有打印的表现工作交给Cell插件完成,因此能够大大降低工作量。

Cell插件除打印功能外,还具有输入、显示、编辑、图表等非常强大的功能,可以制作出非常复杂的报表。利用Cell插件,还可以将数据导出为Excel或PDF等格式的文件。

六、参考文献

1.Cell插件文档:http://www.cellsoft.cc
2.Java Plugin 文档:http://java.sun.com/j2se/1.4.1/docs/guide/plugin/

                                         赵继江
                                         2003年1月
 
北京用友华表软件技术有限公司
 Cell Software Inc.
地址:北京海淀区上地五街16号华胜大厦(100085)
电话:86-10-62969038/39/40/41/42/43/44-113
传真:86-10-62981666
Mobile:13693299262
Web: http://www.cellsoft.cc






发布人:java
→ 推荐给我的好友 → 报告错误链接
上篇文章:Castor JDO实例
下篇文章:checkbox的使用
〖文章打印〗
〖关闭窗口〗
发表评论
查看评论
中“Cell插件在J2EE系统中的应用(用友公司.赵继江)”相关内容 中“Cell插件在J2EE系统中的应用(用友公司.赵继江)”相关内容
中“Cell插件在J2EE系统中的应用(用友公司.赵继江)”相关内容 中“Cell插件在J2EE系统中的应用(用友公司.赵继江)”相关内容
中“Cell插件在J2EE系统中的应用(用友公司.赵继江)”相关内容 中“Cell插件在J2EE系统中的应用(用友公司.赵继江)”相关内容

关于我们网站留言友情链接与我在线与我聊天领取红包管理TOP