<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    方槍槍的java世界

    不要因?yàn)轱L(fēng)雨飄落就停止了你的腳步,真正的得失就在你的心中。 做喜歡做的事,不輕言放棄!

    關(guān)于A(yíng)ctiveX控件的使用

    1 需求背景

    我們?cè)谄髽I(yè)應(yīng)用開(kāi)發(fā)中經(jīng)常會(huì)用到ActiveX控件,如:華表打印控件、密碼小鍵盤(pán)控件、寫(xiě)卡器控件、讀取客戶(hù)端IPMAC信息的控件、二代身份證讀取控件。

    1.1 問(wèn)題現(xiàn)象

    這些控件在代碼中的調(diào)用方式不夠標(biāo)準(zhǔn),五花八門(mén),千差萬(wàn)別,如:

    // 沒(méi)有版本號(hào),和本地安裝版本比對(duì)發(fā)現(xiàn)有新版本時(shí)不會(huì)提示用戶(hù)進(jìn)行升級(jí)

    <object classid="clsid:80B7C135-4C0B-48DE-BA77-0E353012C169" id="TcpCfg"

     codebase="<%=request.getContextPath()%>/data/gettcpcfg.ocx">

    </object>

    // Jsp所在路徑才行,否則找不到

    <object id="ThirdParty" name="ThirdParty" classid="clsid:DAD0331B-6F7E-4CFB-89BF-1DE86A0AC626"

    codebase="ThirdParty.ocx" width="10" height="10">

    </object>

    <object classid="clsid:14B8260F-CBF7-41C0-B52B-062F712ACBF1" id="CRSClientHUB" height="0" width="0" ></object>

    // 如果不寫(xiě),操作員沒(méi)有安裝,會(huì)直接報(bào)錯(cuò),不會(huì)提示安裝

    <object classid="CLSID:636BCD61-4473-4FF5-A4C6-6E030C31EBD4" id="BossICCardOCX"></object>

    // 沒(méi)有版本號(hào)

    <object classid="clsid:3FA32835-2A6A-45E9-B6E9-B00A779A60F3" id="MINIPRINT" name="miniCell"

    width="0" height="0" codebase="<%=miniPath%>"></object>

    1.2 問(wèn)題總結(jié)

    由上面代碼可以看出,上面的代碼有的指定了codebase,有的沒(méi)有指定codebase對(duì)于沒(méi)有指定codebase的情況,控件無(wú)法自動(dòng)下載安裝,用戶(hù)安裝該控件只有一種方式,那就是主動(dòng)下載控件安裝包進(jìn)行手工安裝。當(dāng)前所有的控件使用方式,都無(wú)法實(shí)現(xiàn)控件版本升級(jí)后自動(dòng)更新,只能靠通知用戶(hù)手工下載安裝包重新安裝來(lái)實(shí)現(xiàn)升級(jí)。因此,有必要對(duì)當(dāng)前系統(tǒng)中控件使用方法進(jìn)行規(guī)范,簡(jiǎn)化調(diào)用方式,減少代碼量,同時(shí)實(shí)現(xiàn)自動(dòng)升級(jí)。

    2 解決方案(tag)

    2.1 使用tag引用ActiveX控件

    <xx:activex id='KeyCard1' code='KeyCard' style=”…..” /> // keyCard唯一標(biāo)記數(shù)據(jù)庫(kù)中一個(gè)控件

    tag從數(shù)據(jù)庫(kù)中取出該控件的相關(guān)屬性(是否顯示、classidcodebase、版本號(hào)等),然后組裝成以下格式的HTML

    <object id="KeyCard1" style="display:none" classid="clsid:ACFC1E38-2FA5-4D00-BA69-0EFB62BC96C6" codebase="/data/KeyCard.cab#version=1,0,0,0">

    </object>

    其中Codebase部分包括.ocx文件的版本號(hào)。IE會(huì)比較HTML中的版本號(hào)和已經(jīng)安裝的控件的版本號(hào),如果瀏覽器發(fā)現(xiàn)控件的版本升級(jí)了,就會(huì)自動(dòng)去更新控件。

    后續(xù)需要發(fā)布新版本的ActiveX控件時(shí),只需要更新對(duì)應(yīng)的cab文件,并在數(shù)據(jù)庫(kù)中修改對(duì)應(yīng)的版本信息,用戶(hù)在用到該控件時(shí)瀏覽器會(huì)自動(dòng)提示下載更新。

    2.2 數(shù)據(jù)庫(kù)

    在數(shù)據(jù)庫(kù)中增加一個(gè)存放ActiveX信息的字典表SA_DB_ACTIVEX,格式如下:

    字段名稱(chēng)

    字段說(shuō)明

    字段類(lèi)型

    備注

    CODE

    ActiveX控件編碼

    VARCHAR2(32)

    Tag中引用

    CLASSID

    ActiveX Classid

    VARCHAR2(64)

    如:clsid:ACFC1E38-2FA5-4D00-BA69-0EFB62BC96C6

    STYLE

    ActiveX顯示屬性

    VARCHAR2(256)

    如:display:none

    CODEBASE

    ActiveX安裝包及版本

    VARCHAR2(256)

    :/data/KeyCard.cab#version=1,0,0,0

    DESCRIPTION

    ActiveX描述

    VARCHAR2(256)

     

     

    2.3 編寫(xiě)tag標(biāo)簽

    編寫(xiě)ActiveXBean,包含成員code,prov,style,classid,codebase及相應(yīng)的getset方法。

    在系統(tǒng)初始化時(shí),將數(shù)據(jù)庫(kù)中配置的ActiveX控件信息緩存到一個(gè)Map中,key$(code)_$(prov)value為編寫(xiě)標(biāo)簽

    標(biāo)簽ActiveXTag,接收參數(shù):id(必須)、code(必須)style(可選),并根據(jù)傳入的參數(shù),生成代碼:

    其中,styleclassidcodebase是從ActiveX緩存中獲得。

    2.4 JSP代碼中引用

    通過(guò)<xx:activex id='KeyCard1' style=”…..” code='KeyCard'/>方式進(jìn)行引用,對(duì)于不在頁(yè)面上顯示的控件,style也可以不用,只要在數(shù)據(jù)庫(kù)中配置好即可。

    posted on 2012-12-25 22:58 做強(qiáng)大的自己 閱讀(2862) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Jsp


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲精品在线网站| 久久综合给合久久国产免费| 亚洲精品国产肉丝袜久久| 一本久久综合亚洲鲁鲁五月天 | 免费观看国产精品| 久久精品国产免费观看| 99免费在线视频| 亚欧乱色国产精品免费视频| 亚洲国产成人久久精品大牛影视| 亚洲黄色网站视频| 国产成人精品日本亚洲| 亚洲国产精品丝袜在线观看| 暖暖免费高清日本一区二区三区| 国产91色综合久久免费| 久久国产色AV免费观看| 久久这里只精品99re免费| 99久久免费国产精精品| fc2免费人成在线视频| 免费一级特黄特色大片| 精品在线观看免费| 亚洲AV成人无码网站| 亚洲精品无码久久久久YW| 国产午夜亚洲精品国产| 亚洲人成网站色在线观看| 亚洲国产成+人+综合| 亚洲国产精品yw在线观看| 久久久亚洲欧洲日产国码是AV | 一个人免费视频在线观看www | 国产精品免费视频网站| 成年18网站免费视频网站| 黄瓜视频高清在线看免费下载 | 99亚偷拍自图区亚洲| 亚洲人成在线中文字幕| 国产精品高清视亚洲精品| 亚洲一级毛片免观看| 7777久久亚洲中文字幕| 亚洲欧洲专线一区| 色偷偷噜噜噜亚洲男人| 特级毛片A级毛片100免费播放| 美景之屋4在线未删减免费| 一级成人a做片免费|