首页 | 新闻中心| 公司介绍| 产品走廊| 渠道与销售| 技术支持| 下载中心| 用户认证
蓝色快车PB俱乐部论坛--娱乐茶座回复发言
>>欢迎您,请先登陆 | 注册 | 发贴排行 | 搜索 | 帮助 | 退出
    蓝色快车PB俱乐部论坛
    娱乐茶座
       回复发言

  *为必填项目 常规论坛,只允许注册会员发言

用户名   *您没有注册?
密码   *忘记密码?请与管理员webmaster@besoft.com.cn联系
主题标题   不得超过 50 个汉字
当前心情
  • 将放在帖子的前面
  •                           
                              
    内容

    在此论坛中
  • HTML标签: 不可用
  • UBB标签: 允许
  • 帖图标签: 允许
  • Flash标签: 允许
  • 表情字符转换: 允许
  • 上传图片: 允许
  • 最多16KB

  • 粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字
    字体:      字体大小    颜色:
    点击表情图即可在帖子中加入相应的表情
     
    选项

    是否显示您的签名?
    有回复时使用邮件通知您?


     

    --  作者:287553889
    --  发布时间:2009/6/18 16:30:53

    --  第三方Active X控件在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中的方法的代码实例:

    import netscape.javascript.*;

    import java.applet.*;

    import java.awt.*;

    class MyApplet extends Applet {

    public void init() {

    JSObject win = JSObject.getWindow(this);

    JSObject doc = (JSObject) win.getMember("document");

    win.call("f", null);}}

    在上面的代码中,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) 在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插件的目的。

    (2) 在Applet中提供两个调用接口方法

    下面是一个Applet的代码实例,其中提供了callCellMethod()和callJavaScriptMethod()两个接口方法,分别可用来调用Cell插件的方法和JavaScript的方法:

    public class MyApplet extends javax.swing.JApplet {

    private JSObject win = null;

    private JSObject cell = null;

    public Object callCellMethod(String name, Object[] params) {

    return getCell().call(name, params);}

    public Object callJavaScript(String name, Object[] params) {

    return getJSwin().call(name, params);}

    private JSObject getCell() {

    if (cell == null) {

    try {

    JSObject doc = (JSObject)getJSwin().getMember("document");

    JSObject all = (JSObject)doc.getMember("all");

    cell = (JSObject)all.call("item", new Object[]{"DCellWeb1"});}

    catch (Exception e) {

    e.printStackTrace();} }

    return cell;}

    private netscape.javascript.JSObject getJSwin() {

    if (win == null) {

    win = netscape.javascript.JSObject.getWindow(this);}

    return win;}}

    通过getCell()这个方法,可以在Java Applet中直接获得用JSObject表示的Cell插件,从而可以直接调用它的方法。例如,在Java Applet中向Cell插件的一个单元格写入数据,可以如下调用:

    Integer row = new Integer(1);

    Integer column = new Integer(1);

    Integer page = new Integer(0);

    callCellMethod("SetCellString", new Object[]{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/csdn
     
    2 Java Plugin 文档http://java.sun.com/j2se/1.4.1/docs/guide/plugin/
     

    赵继江

    2003年1月


    ">