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

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

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

    方槍槍的java世界

    不要因為風雨飄落就停止了你的腳步,真正的得失就在你的心中。 做喜歡做的事,不輕言放棄!

    關于ActiveX控件的使用

    1 需求背景

    我們在企業應用開發中經常會用到ActiveX控件,如:華表打印控件、密碼小鍵盤控件、寫卡器控件、讀取客戶端IPMAC信息的控件、二代身份證讀取控件。

    1.1 問題現象

    這些控件在代碼中的調用方式不夠標準,五花八門,千差萬別,如:

    // 沒有版本號,和本地安裝版本比對發現有新版本時不會提示用戶進行升級

    <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>

    // 如果不寫,操作員沒有安裝,會直接報錯,不會提示安裝

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

    // 沒有版本號

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

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

    1.2 問題總結

    由上面代碼可以看出,上面的代碼有的指定了codebase,有的沒有指定codebase對于沒有指定codebase的情況,控件無法自動下載安裝,用戶安裝該控件只有一種方式,那就是主動下載控件安裝包進行手工安裝。當前所有的控件使用方式,都無法實現控件版本升級后自動更新,只能靠通知用戶手工下載安裝包重新安裝來實現升級。因此,有必要對當前系統中控件使用方法進行規范,簡化調用方式,減少代碼量,同時實現自動升級。

    2 解決方案(tag)

    2.1 使用tag引用ActiveX控件

    <xx:activex id='KeyCard1' code='KeyCard' style=”…..” /> // keyCard唯一標記數據庫中一個控件

    tag從數據庫中取出該控件的相關屬性(是否顯示、classidcodebase、版本號等),然后組裝成以下格式的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文件的版本號。IE會比較HTML中的版本號和已經安裝的控件的版本號,如果瀏覽器發現控件的版本升級了,就會自動去更新控件。

    后續需要發布新版本的ActiveX控件時,只需要更新對應的cab文件,并在數據庫中修改對應的版本信息,用戶在用到該控件時瀏覽器會自動提示下載更新。

    2.2 數據庫

    在數據庫中增加一個存放ActiveX信息的字典表SA_DB_ACTIVEX,格式如下:

    字段名稱

    字段說明

    字段類型

    備注

    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 編寫tag標簽

    編寫ActiveXBean,包含成員code,prov,style,classid,codebase及相應的getset方法。

    在系統初始化時,將數據庫中配置的ActiveX控件信息緩存到一個Map中,key$(code)_$(prov)value為編寫標簽

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

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

    2.4 JSP代碼中引用

    通過<xx:activex id='KeyCard1' style=”…..” code='KeyCard'/>方式進行引用,對于不在頁面上顯示的控件,style也可以不用,只要在數據庫中配置好即可。

    posted on 2012-12-25 22:58 做強大的自己 閱讀(2873) 評論(0)  編輯  收藏 所屬分類: Jsp


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 13小箩利洗澡无码视频网站免费| 日本一道本高清免费| 100000免费啪啪18免进| jizz在线免费播放| 免费看黄网站在线看| 国产亚洲色婷婷久久99精品91| 青青青国产在线观看免费| 人体大胆做受免费视频| 亚洲精品无码久久久久久久| 国产亚洲一区二区三区在线观看| 亚洲高清中文字幕免费| 亚洲A丁香五香天堂网| 最近2019中文字幕mv免费看| 可以免费观看的毛片| 一区二区视频免费观看| 无码天堂亚洲国产AV| 丰满妇女做a级毛片免费观看| 无遮挡国产高潮视频免费观看| 久久久久久国产精品免费无码| 一级女性全黄久久生活片免费 | 亚洲av无码av在线播放| 亚洲国产精品日韩av不卡在线 | 91精品国产亚洲爽啪在线影院| 亚洲AV综合色区无码一区| 一区二区三区免费视频观看 | 亚洲成a人片在线观看中文app | 久久国产成人亚洲精品影院| 国产亚洲综合色就色| 国产亚洲福利一区二区免费看 | 亚洲AV色无码乱码在线观看| 99精品一区二区免费视频| 青青青免费国产在线视频小草| 黄色三级三级免费看| 久久一区二区三区免费播放 | 国产精品亚洲成在人线| 亚洲日韩AV无码一区二区三区人| 一级做a爰黑人又硬又粗免费看51社区国产精品视| 免费无码毛片一区二区APP| 一二三四影视在线看片免费 | 97人伦色伦成人免费视频| 1000部啪啪未满十八勿入免费|