解决Java Applet和Java Script通信问题

原创 2004年12月31日 15:04:00
在大多数WebGIS平台都采用Java Applet和Javascript结合的方式来实现客户端。一般用Applet来发布图形数据,属性数据采用html页面来输出。为了界面美观,一般把Applet和属性页面置于一个框架内,属性查询不再弹出新的页面而是刷新框架中的页面,根据属性记录也可以定位图形,要实现图属之间的这种交互,必须解决Java Applet和Javascript之间的通信问题。 图到属性可以通过打开窗口的时候指定同一个target就行了,也可以通过调用页面中Javascript来刷新属性页面。netscape包的JSObject提供这方面的支持。 属性到图必须通过嵌入的Javascript脚本来调用Applet的方法。默认情况下Javascript是不能调用Applet的方法的,必须通过设置参数MYSCRIPT来激活Applet。 把Applet嵌入页面用两种方式,一种使用applet标签,另一种采用object标签。如下:
<!--
<applet CODEBASE="classes/" CODE="sam.class" NAME="sam" WIDTH="800" HEIGHT="600" HSPACE="0" VSPACE="0" ALIGN="middle" archive="shspsims.jar" MAYSCRIPT>
  <param name="cabbase" value="shspsims.cab">
<param name="DebugOutput" value="TRUE">
jad -s java -f -t -8 -r -o *.class
  <param name="Language" value="zh_CN">
  <param name="datasource" value="SHSPS">
  <param name="IniFile" value="sam_ini.asp">
  <param name="ScaleDisplay" value="0.000331"> 
  <param name="DecimalDigits" value="3">
</applet>
-->
====================================================================================
<!--
<object CLASSID="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" ID="sam" WIDTH="100%" HEIGHT="100%" codebase="<%=sBaseURL%>/isclient/components/download/j2re-1_4_2_06-windows-i586-p.exe#Version=1,4,2,mn">
  <param name="code" value="inta.sam">
  <param name="archive" value="classes/sam.jar">
  <param name="DebugOutput" value="TRUE">
  <param name="IniFile" value="sam_ini.asp">
  <param name="Language" value="zh_CN">
  <param name="datasource" value="SHSPS">
  <PARAM NAME="MAYSCRIPT" VALUE="true">
  <param name="ScaleDisplay" value="0.000331"> 
  <param name="DecimalDigits" value="3">   
</object>
-->
采用applet标签是一种比较老的方式,每次都得下载所有的代码。速度比较慢,此外由于大多公司代码签名时用的都是测试用的数字签名,每次都会谈出对话框是否下载等等。另外发布时,有些客户端没有安装JRE,不能自动下载安装。
采用object标签就能克服以上缺点,自动检测客户端是否安装了JRE,没有安装自动从服务器端下载安装。不过如果已经安装有JRE 1.3会不下载,需要手工卸载才能自动下载。实现原理也很简单,IE根据object的CLSID去注册表中CLSID键下找是否已经安装了该组件,版本是否一致,否则下载并安装codebase指向的URL中的包。支持.exe、.cab、.dll和.ocx等等。
        applet打包方式遵循Java Extension规范,一个每次都下载的很小的主JAR包,其它是一些扩展JAR包。主JAR包中有一个manifest文件,说明它依赖于哪几个包,如果包不在JRE/lib/ext/目录下,自动到指定的URL去下载。只有当版本更新时才自动下载更新本地JAR包,就是主JAR包中扩展包的版本比ext下扩展JAR包的版本新时会自动更新。

       但是在打包时有几个注意事项,否则会碰到找不到类的错误。
1、主JAR包可以引用扩展包,但是反过来不行。当然扩展包之间相互引用没有问题。
2、如果使用Class.forName()来创建对象,被创建的对象类必须在同一个JAR包中。我没有尝试创建一个位于另一个扩展包中的对象,有兴趣的可以试试。
3、循环引用的类最好打在一个JAR包中,比如A引用B,B引用A,那么A和B最好放在一个JAR包中。

Java Card Applet Development——环境搭建及基础概念

Java Card 目录(?)[+] 利用Eclipse Java Card Development Environment (EclipseJCDE) ...
  • supergame111
  • supergame111
  • 2015年06月21日 16:34
  • 893

java串口通讯详解

序言 说到开源,恐怕很少有人不挑大指称赞。学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程,商家通过开源软件赚到了钱……,总之是皆大欢喜。然而开源软件或类库...
  • wufei151
  • wufei151
  • 2013年06月07日 10:45
  • 1089

Java Applet 的运行原理

一、Java Applet的运行原理和生命周期          1.Applet被嵌入到HTML页面中,并由applet的容器(appletviewer或者Web浏览器)执行.       ...
  • z931284151
  • z931284151
  • 2015年10月13日 20:47
  • 969

JAVA应用程序转换为Applet

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41673295 将一个图形的JAVA应用程序转换为能够嵌入在...
  • pistolove
  • pistolove
  • 2014年12月02日 08:06
  • 1824

Java Applet使用简记

Java Applet使用简记
  • ppdyhappy
  • ppdyhappy
  • 2016年09月27日 16:42
  • 945

Java基础——GUI编程和Applet

33、GUI 概述 GUI(Graphical User interface)图形用户接口 用图形的方式,来显示计算机操作的界面,这样更方便,更直观 CLI(Command Line User Int...
  • dyonline2012
  • dyonline2012
  • 2013年07月14日 20:09
  • 1137

Java核心编程十四:Applet与Web

1 Applet基础 1.1 Applet简介 Applet是一种将Java程序,通常为UI程序加载进web浏览器,在用户的浏览器中执行的一套转换机制。因而HTML页面中必须支持相关的标签,告诉浏览器...
  • zzulp
  • zzulp
  • 2013年12月29日 20:48
  • 1659

java applet 一个简单的例子(applet+html)

java applet是一个类,其层次结构如下图:  类 JApplet  java.lang.Object    java.awt.Component        java.awt.Con...
  • caomiao2006
  • caomiao2006
  • 2013年12月24日 21:02
  • 16929

主题研究:JAVA applet 和 ActiveX 的区别

由于项目需要在B/S 系统的B端强制做了一个 本地的Java application 程序, Java application程序通过web socket 或者Ajax 直接与浏览器进行通讯。 ...
  • liu_jie_1
  • liu_jie_1
  • 2017年05月28日 19:08
  • 604

Java Applet基础讲解

applet是一种Java程序。它一般运行在支持Java的Web浏览器内。因为它有完整的Java API支持,所以applet是一个全功能的Java应用程序。 如下所示是独立的Java应用程序和app...
  • u011225629
  • u011225629
  • 2015年09月11日 09:26
  • 1539
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Java Applet和Java Script通信问题
举报原因:
原因补充:

(最多只允许输入30个字)