<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 做強大的自己 閱讀(2862) 評論(0)  編輯  收藏 所屬分類: Jsp


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


    網站導航:
     
    主站蜘蛛池模板: 国产精品高清免费网站| 未满十八18禁止免费无码网站 | 中国一级特黄的片子免费| 亚洲国产美女在线观看| 日韩吃奶摸下AA片免费观看| 国产亚洲福利精品一区| 欧洲亚洲国产精华液| 国产AV无码专区亚洲AWWW| 尤物视频在线免费观看| 免费精品一区二区三区第35| 亚洲字幕AV一区二区三区四区| 亚洲日韩av无码| 成年女人色毛片免费看| 亚洲美国产亚洲AV| 亚洲精品狼友在线播放| 毛片在线免费视频| 成人免费区一区二区三区 | 1000部拍拍拍18勿入免费视频下载| 亚洲AV无码乱码国产麻豆穿越| 最近中文字幕免费mv视频8| 拍拍拍无挡视频免费观看1000| 亚洲AV人无码激艳猛片| 中文字幕免费视频| 国产精品亚洲综合五月天| 手机在线看永久av片免费| 亚洲国产精品无码久久久秋霞1| 男女啪啪永久免费观看网站| 99re在线这里只有精品免费| 国产亚洲精品2021自在线| 亚洲区小说区激情区图片区| 免费精品一区二区三区在线观看| 嫩草在线视频www免费观看| 亚洲日本久久一区二区va| 亚洲av无码片在线播放| 亚洲中文字幕视频国产| 日韩视频在线免费| 中国在线观看免费国语版| 美女在线视频观看影院免费天天看| 国产精品亚洲天堂| 亚洲成AV人片在WWW| 亚洲av永久无码精品天堂久久|