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

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

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

    方槍槍的java世界

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

    關(guān)于ActiveX控件的使用

    1 需求背景

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

    1.1 問題現(xiàn)象

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

    // 沒有版本號,和本地安裝版本比對發(fā)現(xiàn)有新版本時不會提示用戶進行升級

    <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 問題總結(jié)

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

    2 解決方案(tag)

    2.1 使用tag引用ActiveX控件

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

    tag從數(shù)據(jù)庫中取出該控件的相關(guān)屬性(是否顯示、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中的版本號和已經(jīng)安裝的控件的版本號,如果瀏覽器發(fā)現(xiàn)控件的版本升級了,就會自動去更新控件。

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

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

    在數(shù)據(jù)庫中增加一個存放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及相應(yīng)的getset方法。

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

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

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

    2.4 JSP代碼中引用

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

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


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产精品狼友中文久久久| 男女午夜24式免费视频| 无码国产精品久久一区免费| 久久精品国产亚洲AV电影 | 亚洲第一se情网站| 久久久久国色AV免费观看性色| 91亚洲自偷在线观看国产馆| 久久免费看黄a级毛片| 久久精品亚洲AV久久久无码 | 久久亚洲AV无码精品色午夜| 一级毛片aaaaaa免费看| 亚洲网站免费观看| A在线观看免费网站大全| 亚洲免费综合色在线视频| 日本免费一区二区三区最新| 美女免费精品高清毛片在线视| 亚洲欧洲一区二区三区| 中文字幕在线视频免费观看| 久久综合图区亚洲综合图区| 毛片免费全部播放无码| 亚洲色欲啪啪久久WWW综合网| 日韩精品无码人妻免费视频| 一级女人18片毛片免费视频| 国产亚洲美日韩AV中文字幕无码成人 | 春暖花开亚洲性无区一区二区 | 亚洲VA中文字幕无码一二三区 | 精品国产亚洲一区二区三区在线观看| 国产老女人精品免费视频| 久青草国产免费观看| 亚洲精品高清久久| 免费无码AV片在线观看软件| 日日摸夜夜添夜夜免费视频| 亚洲第一成年男人的天堂| 啦啦啦在线免费视频| 国产vA免费精品高清在线观看 | 亚洲av无码专区在线观看下载| 精品亚洲一区二区三区在线观看 | 日本人的色道免费网站| 精品国产日韩亚洲一区91| 亚洲AV无码久久精品狠狠爱浪潮 | 亚洲午夜视频在线观看|