分享
 
 
 

解决Java Applet和Java Script通信问题

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在大多数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包中。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有