Cell插件在J2EE系统中的应用 |
作者:佚名 发布时间:2005-04-02 来源:不详
|
[摘要] 在基于J2EE平 种重要形式。但Java API对 文介绍的系统通过引入一个 Applet完成界面表现,由Ce 信。
|
台的信息系统中,具有丰富表现 打印的支持比较弱,打印输出复 ActiveX控件--Cell插件--来解 ll插件完成打印输出,两者之间
|
能力的Java Applet是界面层的一 杂的单据和报表需要大量工作。本 决这个问题。该系统中,由Java 通过Sun公司的一套接口API互相通
|
1.1从Java Applet访问Java Script方法和Ocx控件 |
Sun公司在JDK中提供了 Applet访问HTML页面中的DO %JAVA_HOME%jrelibjaws 环境变量classpath中,就 调用Java Script中的方法
|
一套从Java Applet访问Java Sc M对象的机制。该API以一个Jar .jar,其中%JAVA_HOME%是你安 可以用它实现从Java Applet到J 的代码实例:
|
ript的API,由此可以实现Java 文件的形式提供: 装JDK的目录。将该jar文件加入到 ava Script的调用了。下面是一段
|
import netscape.javascript.*; |
class MyApplet extends Applet { |
JSObject wi
|
n = JSObject.getWindow(this)
|
;
|
JSObject doc = (JSObjec
|
t) win.getMember("document");
|
在上面的代码中,win.call(“f”,
|
null)调用了JavaScript中的方法f()。
|
1.2从JavaScript访问Java Applet |
当使用Java Plugin1.4 Plugin这个控件的方法,直 明:
|
.x运行Java Applet时,只需把J 接在Java Script中进行调用即
|
ava Applet中的方法视为Java 可。下面用一个简单的例子进行说
|
(1) 在载入Java Plugin的Object标
|
签中,用参数ID指定一个名字:
|
CLASSID="CLSID:8AD9C840-044E-11d1-B3E9-00805F499D93"> |
(2) 在HTML页面上增加
|
一个按钮,点击它时从Java Scr
|
ipt调用Java Applet中的方法:
|
onClick="calculate" language="JavaScript"> |
(3) 假定你的Java Applet是MyApple 以用如下的Java Script代码直接调用该
|
t.java,它有一个public方法method1(),那么就可 方法:
|
document.
| . MyPlunin.method1()
|
华表的Cell插件是一个 Windows的浏览器中显示、
|
功能非常类似于Excel的、用于W 编辑、打印表格。
|
eb开发的ActiveX控件。它可以在
|
图一是系统的配置示意 Java Applet和Cell插件部 器中。
|
图。由图可见,这是一个典型的 署在Web Server上,在运行时,
|
三层应用系统。在本系统中, 它们被下载到客户端,运行在浏览
|
图二是系统的运行示意图。由图可见 的Servlet访问应用服务器上的EJB,与后 界面。
|
,运行在客户机上的Java Applet通过Web Server上 台交互。Java Applet作为表示层,在客户机上显示
|
当需要打印输出时,Ja 的打印与览和打印方法,完
|
va Applet将数据和显示格式设 成打印功能。
|
置到华表插件中,并调用华表插件
|
为了在Applet界面中调
|
用华表的Cell插件,我们首先在
|
HTML页面上隐藏了一个Cell插件:
|
030-4881-8BD2-EA25350E574A
|
id=DCellWeb1 style="HEIGHT: 0px; WIDTH: 0px"> |
通过style="HEIGHT: 0 藏Cell插件的目的。
|
px; WIDTH: 0px"指定Cell插件
|
的高度和宽度都为0,从而达到隐
|
下面是一个Applet的代码实例,其中 两个接口方法,分别可用来调用Cell插件
|
提供了callCellMethod()和callJavaScriptMethod() 的方法和JavaScript的方法:
|
public class MyApple
|
t extends javax.swing.JApple
|
t {
|
private JSObject win = null; |
private JSObject cell = null; |
public Object callCe
|
llMethod(String name, Object
|
[] params) {
|
return getCell().call(nam
|
e, params);
|
public Object callJa
|
vaScript(String name, Object
|
[] params) {
|
return getJSwin().call(na
|
me, params);
|
private JSObject getCell() { |
JSObject do ;
|
c = (JSObject)getJSwin().getMember("document")
|
|
JSObject all = (JSObject)do
|
c.getMember("all");
|
t[]{"DCellWeb1"});
|
cell = (JSObject)all.call("
|
item", new Objec
|
private netscape.javascript.JSOb
|
ject getJSwin() {
|
win =
|
netscape.javascript.JSObject
|
.getWindow(this);
|
通过getCell()这个方 从而可以直接调用它的方法 以如下调用:
|
法,可以在Java Applet中直接 。例如,在Java Applet中向Cel
|
获得用JSObject表示的Cell插件, l插件的一个单元格写入数据,可
|
Intege
|
r row = new Integer(1);
|
Intege
|
r column = new Integer(1);
|
Intege
|
r page = new Integer(0);
|
callCellMethod("Se “str”});
|
tCellString", new Object[]{column, row, page,
|
其中SetCellString是C Cell插件的调用。
|
ell插件提供的接口方法。这样
|
就实现了从Java Applet到华表的
|
在这个应用系统中,我 。所有打印格式和数据都在 Cell插件完成分页和打印功
|
们只利用Cell插件的打印预览和 Java Applet中准备好,按单元 能。
|
打印两项功能,不用它做屏幕显示 格向Cell插件设置格式和数据,由
|
这是一种表现与数据分离的方式:Ja 交给Cell插件完成,因此能够大大降低工
|
va Applet中只组织打印数据,所有打印的表现工作 作量。
|
Cell插件除打印功能外 非常复杂的报表。利用Cell
|
,还具有输入、显示、编辑、图 插件,还可以将数据导出为Exce
|
表等非常强大的功能,可以制作出 l或PDF等格式的文件。
|
1. Cell插件文档:http://ww
|
w.cellsoft.cc
|
2. Java Plugin
|
文档:http://java.sun.com/j
|
2se/1.4.1/docs/guide/plugin/
|
|
|
|
|
|