日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

解決JavaApplet和JavaScript通信問(wèn)題

 ShangShujie 2007-06-10
在大多數(shù)WebGIS平臺(tái)都采用Java Applet和Javascript結(jié)合的方式來(lái)實(shí)現(xiàn)客戶端。一般用Applet來(lái)發(fā)布圖形數(shù)據(jù),屬性數(shù)據(jù)采用html頁(yè)面來(lái)輸出。為了界面美觀,一般把 Applet和屬性頁(yè)面置于一個(gè)框架內(nèi),屬性查詢不再?gòu)棾鲂碌捻?yè)面而是刷新框架中的頁(yè)面,根據(jù)屬性記錄也可以定位圖形,要實(shí)現(xiàn)圖屬之間的這種交互,必須解 決Java Applet和Javascript之間的通信問(wèn)題。 圖到屬性可以通過(guò)打開(kāi)窗口的時(shí)候指定同一個(gè)target就行了,也可以通過(guò)調(diào)用頁(yè)面中Javascript來(lái)刷新屬性頁(yè)面。netscape包的 JSObject提供這方面的支持。 屬性到圖必須通過(guò)嵌入的Javascript腳本來(lái)調(diào)用Applet的方法。默認(rèn)情況下Javascript是不能調(diào)用Applet的方法的,必須通過(guò)設(shè) 置參數(shù)MYSCRIPT來(lái)激活A(yù)pplet。 把Applet嵌入頁(yè)面用兩種方式,一種使用applet標(biāo)簽,另一種采用object標(biāo)簽。如下:
<!--
<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標(biāo)簽是一種比較老的方式,每次都得下載所有的代碼。速度比較慢,此外由于大多公司代碼簽名時(shí)用的都是測(cè)試用的數(shù)字簽名,每次都會(huì)談出對(duì)話框是否下載等等。另外發(fā)布時(shí),有些客戶端沒(méi)有安裝JRE,不能自動(dòng)下載安裝。
采 用object標(biāo)簽就能克服以上缺點(diǎn),自動(dòng)檢測(cè)客戶端是否安裝了JRE,沒(méi)有安裝自動(dòng)從服務(wù)器端下載安裝。不過(guò)如果已經(jīng)安裝有JRE 1.3會(huì)不下載,需要手工卸載才能自動(dòng)下載。實(shí)現(xiàn)原理也很簡(jiǎn)單,IE根據(jù)object的CLSID去注冊(cè)表中CLSID鍵下找是否已經(jīng)安裝了該組件,版本 是否一致,否則下載并安裝codebase指向的URL中的包。支持.exe、.cab、.dll和.ocx等等。
        applet打包方式遵循Java Extension規(guī)范,一個(gè)每次都下載的很小的主JAR包,其它是一些擴(kuò)展JAR包。主JAR包中有一個(gè)manifest文件,說(shuō)明它依賴于哪幾個(gè)包, 如果包不在JRE\lib\ext\目錄下,自動(dòng)到指定的URL去下載。只有當(dāng)版本更新時(shí)才自動(dòng)下載更新本地JAR包,就是主JAR包中擴(kuò)展包的版本比 ext下擴(kuò)展JAR包的版本新時(shí)會(huì)自動(dòng)更新。

       但是在打包時(shí)有幾個(gè)注意事項(xiàng),否則會(huì)碰到找不到類(lèi)的錯(cuò)誤。
1、主JAR包可以引用擴(kuò)展包,但是反過(guò)來(lái)不行。當(dāng)然擴(kuò)展包之間相互引用沒(méi)有問(wèn)題。
2、如果使用Class.forName()來(lái)創(chuàng)建對(duì)象,被創(chuàng)建的對(duì)象類(lèi)必須在同一個(gè)JAR包中。我沒(méi)有嘗試創(chuàng)建一個(gè)位于另一個(gè)擴(kuò)展包中的對(duì)象,有興趣的可以試試。
3、循環(huán)引用的類(lèi)最好打在一個(gè)JAR包中,比如A引用B,B引用A,那么A和B最好放在一個(gè)JAR包中。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=235996

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多