论Java访问COMActiveX
音乐网站(论文范文,JSP,JAVA,毕业设计)

基于JAVA在线音乐系统的设计与实现1绪论1.1 课题的目的和意义随着互联网和宽带上网的普及,Integer音乐网站在中国异军突起,并日益渗透到人们的日常生活中。
音乐网站是运用现代通信技术、计算机和网络技术进行的一种社会形态,其目的是通过互联网、提高社会生产效率、优化社会资源配置,从而实现社会财富的最大化利用。
本课题所研究的Integer音乐网站主要是为个人提供搜索,欣赏和下载的一个平台,从而给个人带来方便。
课题目标是设计并实现一个B/S体系结构的Integer音乐网站。
结合实践,理解网页开发技术和数据库的基本知识,学习相关开发工具和应用软件,熟悉网站建设的过程,熟练掌握网络数据库编程方法。
1.2 国内现状分析现在我国的信息管理水平还比较落后,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代传统的管理方法必然被计算机为基础的信息管理所取代。
软件作为一项有力的工具,只能当此种工具,与我们的实践相结合起来的时候,才具有重大的社会价值及使用价值。
因此根据目前实际的情况开发这样一套管理系统是十分必要的。
随着科学技术的不断提高,计算机科学技术日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机进行管理,具有着手工管理所无法比拟的优点。
例如:可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高工作的效率,也是信息正规化管理与世界接轨的重要条件。
本系统用JSP语言来编写社本系统,数据库用SQLSERVER 2000来连接系统。
本论文主要涉及软件,数据库与网络技术等。
涵盖知识面广,可有效地提高学生综合运用所学知识分析解决问题的能力,增强学生对事物的理解与掌握能力,培养学生掌握科学的研究方法,正确的设计思想,独立思考,勇于进取,探索创新,为今后进一步学习与工作奠定了良好的基础。
2可行性研究与需求分析2.1 可行性研究该阶段通过对系统目标的初步调研和分析,提出可行性方案并进行论证。
赛博空间技术及其在虚拟旅游规划中的应用_王璐

收稿日期:2003-07-22; 修订日期:2003-10-30 作者简介:王璐(1976-),女,硕士研究生,主要从事地理信息系统的应用研究。
赛博空间技术及其在虚拟旅游规划中的应用王 璐1,吴华意2(1.湖北大学商学院,湖北武汉430062;2.测绘遥感信息工程国家重点实验室,湖北武汉430079)摘要:该文结合赛博空间技术的发展和旅游规划的现状,提出了虚拟旅游规划的思路。
基于地学信息服务(GISer 2vices )思想提出虚拟旅游规划的实现方案:利用G eo Eye3D 平台构建虚拟旅游规划系统,通过Java 实现虚拟景观漫游。
并对赛博空间技术在虚拟旅游规划平台构建、虚拟旅游产品开发和网络营销等中的应用做了初步探讨。
关键词:赛博空间;技术支撑;虚拟旅游规划中图分类号:F590.1 文献标识码:A 文章编号:1672-0504(2004)01-0104-05 Internet 的发展极大地缩短了人们在时间和空间上的距离,并成为人类的一种生活方式。
据西班牙旅游局统计,70的西班牙人的出行决策是通过Internet 获取的,在美国24%的人上网是为了寻找旅游目的地。
Internet 为人们创造了一个全新的生活空间———Cyberspace (Couclelis H ,1996),依托于Internet 正在塑造新的商业模式和秩序,对产业空间组织产生着深远的影响,也成为企业运营和改善形象的重要手段,虚拟企业、虚拟资本等的出现就是实例。
在此空间里电子商务无处不在,信息和“金钱”可以自由跨越空间,人们可以冲破地理“锚地”的束缚,凭借信息手段在Cyberspace 上自由地“飞翔”,创造自己的赛博文化[1],实现各种愿望,包括交流、商务、旅游等。
在此空间漫游的每一个人都可以视为旅游者,他们的行为偏好更为复杂、更难以预测。
这是传统的旅游规划方法所无法应对的,因而网络时代的旅游规划必然要从浮于理论表面、以主观经验为主、定性多、定量少、缺少技术支持的感性规划[2]向Cybertourism 发展,其支撑技术除Internet 外,主要是20世纪70年代以后才出现的赛博空间技术。
基于工作流的办公自动化系统开发与实现

基于工作流的办公自动化系统开发与实现在分析传统办公模式不足的基础上,提出建立功能强大的网络办公自动化系统,提高办公效率和信息决策,是各单位进行信息化建设的必由之路。
重点介绍了系统开发的工具和关键技术,阐述了系统结构、系统设计与实现。
标签:OAB/SC/S工作流一、引言随着信息时代和网络技术的发展,无论是企业、高校还是政府机关,都需要处理大量的文案,安排复杂的工作流程,决策者需要依据各种信息做出重要的决定。
而传统办公模式存在以下的弊端:员工工作计划、日志缺乏管理,管理层很难根据工作实际情况合理安排工作任务。
公司政策、通知都必须打印传阅,文件下达速度慢、大量纸张被浪费。
请假销假、报销不仅要填写专用单据,而且审批程序复杂,报批效率低。
办公用品、图书资料以及固定资产缺乏系统化管理,稍有不慎即可导致公共资产流失。
因此拥有一套自动化的办公系统,对办公人员和企业决策者来说,工作效率上的提高是显而易见的。
依托网络平台,办公自动化系统还可以实现不同地理位置、不同单位或部门之间的协同办公。
作为高效率、低消耗的办公自动化(OA)系统必将成为各企事业单位现代化建设的必然选择。
二、系统的开发工具及关键技术1.开发工具网络办公自动化系统开发采用B/S和C/S混合模式,利用局域网、Internet技术来实现开发,在开发工具中选择使用对系统要求不高且易于开发的ASP(Active Server Pages)作为开发语言,使用VBScript 、JavaScript脚本,以当前最流行的功能强大并且安全性较高、易于操作和维护的SQL2000作数据库。
2.系统开发关键技术(1)安全技术:一个系统的安全性主要取决于三个方面:一是数据库的安全管理,这个由数据库系统保障;另一个是应用安全管理,采用用户和用户组相组合作为管理单元,进行权限管理。
根据不同的级别设置不同的权限,该项工作由专门的系统管理员完成,没有授权的人员不能随意对数据进行拷贝,更不能进行删除和修改操作;再一个是文件传输的安全问题,在技术上使用较为先进的ActiveX控件,来构筑包括从与用户交互和适应COM的事务处理监视器到Web服务器,全部实现自动化。
外汇应用系统访问设置手册(IE8-9)

外汇应用系统访问设置手册目录一、说明 (3)(一)操作系统兼容性 (3)(二)浏览器兼容性 (3)(三)IE版本兼容性 (4)(四)浏览器设置说明及要求 (4)二、浏览器设置 (5)(一)IE浏览器版本查看 (5)(二)设置受信任站点 (6)(三)设置Cookie级别 (11)(四)设置兼容性视图 (13)(五)弹出窗口设置 (15)(六)打印页面设置 (15)(七)脚本调试开关设置 (17)(八)清除浏览器缓存信息 (17)三、Java运行环境(JRE)安装及设置 (22)四、下载安装数据报送插件 (25)(一)自动下载安装数据报送插件 (25)(二)手动下载安装数据报送插件 (26)五、系统登录 (28)一、说明登录应用服务平台(/asone/)访问外汇应用系统前,需要对浏览器进行。
(一)操作系统兼容性应用服务平台及通过应用服务平台登录的外汇应用系统全面兼容Windows操作系统平台。
对于其他操作系统的兼容性,参照下表。
(二)浏览器兼容性应用服务平台主要支持基于Windows平台的浏览器,兼容IE浏览器。
并更新兼容大部分常见浏览器,如360浏览器,谷歌浏览器,火狐浏览器等。
通过应用服务平台访问的外汇应用系统,主要基于IE浏览器进行开发,部分外汇应用系统存在对除IE浏览器之外其他浏览器不兼容的现象,所以建议使用IE浏览器进行业务访问。
除Windows操作系统外,本系统暂不支持在其他操作系统上通过浏览器进行外汇应用系统业务操作。
对于各浏览器的兼容性,参见下表。
注:不支持Windows10系统自带Edge浏览器。
(三)IE版本兼容性外汇应用系统对于外汇应用系统的部分业务操作会出现不兼容现象,对于各版本的建议操作如下表。
(四)浏览器设置说明及要求本手册为IE浏览器设置手册。
如果您的操作系统是Win-Vista,Win-7或Win-2003,Win-2008及以上版本,请使用系统管理员身份进行如下所述的设置操作。
Iternet知识

第一章接入Internet一.Internet简介Internet目前在人们的眼里是以信息高速公路的雏型对待的。
1.Internet的含义与历史Internet 1969年年起源于美国。
(高级研究项目机构网络计划)所形成的Arpanet意图是用于军事研究。
1970年 Arpanet拓展了应用领域,形成了一个连接美国国防部和高校的强大通信网络。
1983年,TCP/IP协议成为Arpanet上标准的通讯协议,它的应用标志着的形成。
TCP/IP协议是指传输控制协议/互联网协议。
广义上,它包括了Internet上其它总计100多个协议。
TCP主要是保证Internet上数据传送的安全性、完整性和按次序性。
其作用是把传送的整个数据分成许多数据包,每一个数据包用一个序号和一个接收地址来标定,并插入一些纠错信息。
IP的作用是将数据包从源主机到目的主机的传递。
1985年美国自然科学基金会用5台超级计算机与各高校的计算机连接起来形成了一个强大的信息资源网络。
这就是最初的Internet。
1989年Arpanet由于不适应网络的进一步发展退出,由NSFNET所取代。
Internet从军事领域转向更广阔的领域。
1995年NSFNET解体,美国自然基金会与美国电信公司合作建立了新的高速数据网,从此Internet 秒进入了商业化应用阶段。
Internet的含义Internet是指众多不同的网络通过网络互联设备,如路由器等现代通信手段而形成的一种全球性的广域网络。
1994年我国中科院中国科学技术网首次与Internet接通。
并注册了我国的最高域名CN,使中国成为第71个国家级网加入了Internet。
后来邮电部中国公用计算机互联网、国家教委的中国教育和科研计算机网以及电子工业部的中国信息金桥网。
形成了我国四大互联网。
2.Internet的信息服务⑴万维网WWW服务它是一种基于超文本方式的信息查寻服务系统。
WWW服务器的数量正以2000%的速度发展。
Javaexcel转化为pdf(数据写入excel)

Javaexcel转化为pdf(数据写⼊excel)String IDs = (String) params.get("IDs");String[] idList = IDs.split(",");List<BasicInformation> basic = new ArrayList<BasicInformation>();for(int i = 0;i<idList.length;i++) {Integer id = Integer.valueOf(idList[i]);BasicInformation basicInformation = biddingInformationDao.getClaimInfo(id);//根据basicInformation的id获取信息basic.add(basicInformation);}String fileName = WriteExcel.basicExcel(basic,request);import java.io.File;import java.math.BigDecimal;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import javax.servlet.http.HttpServletRequest;import com.sinosoft.cms.entity.ApplicantInformation;import com.sinosoft.cms.entity.BasicInformation;import com.sinosoft.cms.entity.BidInformation;import com.sinosoft.cms.entity.InsuredInformation;import jxl.Workbook;import bel;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public static String basicExcel(List<BasicInformation> basic,HttpServletRequest request) {// 开始写⼊excel,创建模型⽂件头String[] titleA = { "项⽬名称", "招标⼈名称","招标⼈联系电话", "招标⽅名称", "投保⼈名称","⾦额(保费)"};Date date = new Date();String str = "yyyMMddHHmmss";SimpleDateFormat sdf = new SimpleDateFormat(str);String name = sdf.format(date) + ".xls";String target = sdf.format(date) + ".pdf";String pathStr = request.getSession().getServletContext().getRealPath("/");pathStr = pathStr.replaceAll("\\\\", "/");System.out.println("系统根⽬录=="+pathStr);String url = pathStr+"downloadFile/" + name ;// 创建Excel⽂件,B库CD表⽂件File fileA = new File(url);if (fileA.exists()) {//如果⽂件存在就删除fileA.delete();}try {fileA.createNewFile();// 创建⼯作簿WritableWorkbook workbookA = Workbook.createWorkbook(fileA);// 创建sheetWritableSheet sheetA = workbookA.createSheet("sheet1", 0);Label labelA = null;// 设置列名for (int i = 0; i < titleA.length; i++) {labelA = new Label(i, 0, titleA[i]);sheetA.addCell(labelA);}if (basic != null && basic.size() > 0) {SimpleDateFormat df = new SimpleDateFormat("yyy-MM-dd");BasicInformation basicInformation = new BasicInformation();// 获取数据源for (int i = 1; i - 1 < basic.size(); i++) {basicInformation = basic.get(i - 1);BidInformation bidInformation = basicInformation.getBidInformation();//项⽬名称InsuredInformation InsuredInformation = basicInformation.getInsuredInformation();//招标⼈名称ApplicantInformation applicantInformation = basicInformation.getApplicantInformation();//投标单位名称labelA = new Label(0, i, bidInformation.getProjectName());sheetA.addCell(labelA);labelA = new Label(1, i, InsuredInformation.getInsuredName());sheetA.addCell(labelA);labelA = new Label(2, i, InsuredInformation.getInsuredMobile());sheetA.addCell(labelA);labelA = new Label(3, i, bidInformation.getBidderName());sheetA.addCell(labelA);labelA = new Label(4, i, applicantInformation.getApplicantName());sheetA.addCell(labelA);BigDecimal amount = basicInformation.getPermium();//⾦额(保费)labelA = new Label(5, i, amount.stripTrailingZeros().toPlainString());sheetA.addCell(labelA);}}workbookA.write();// 写⼊数据workbookA.close();// 关闭连接String source2 = url;String target2 = pathStr+"downloadFile/" + target ;ExcelToPdf.excel2pdf(source2,target2);System.out.println("成功写⼊⽂件,下载地址== " + url);return target;} catch (Exception e) {e.printStackTrace();System.out.println("⽂件写⼊失败,报异常..."+e.toString());return null;}}//excel 转 pdf ⼯具类import com.jacob.activeX.ActiveXComponent;import .Dispatch;import .Variant;public class ExcelToPdf {public static void excel2pdf(String source, String target) {System.out.println("启动Excel");long start = System.currentTimeMillis();ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动excel(Excel.Application)try {app.setProperty("Visible", false);Dispatch workbooks = app.getProperty("Workbooks").toDispatch();System.out.println("打开⽂档" + source);Dispatch workbook = Dispatch.invoke(workbooks, "Open", Dispatch.Method, new Object[]{source, new Variant(false),new Variant(false)}, new int[3]).toDispatch();Dispatch.invoke(workbook, "SaveAs", Dispatch.Method, new Object[] {target, new Variant(57), new Variant(false),new Variant(57), new Variant(57), new Variant(false),new Variant(true), new Variant(57), new Variant(true),new Variant(true), new Variant(true) }, new int[1]);Variant f = new Variant(false);System.out.println("转换⽂档到PDF " + target);Dispatch.call(workbook, "Close", f);long end = System.currentTimeMillis();System.out.println("转换完成..⽤时:" + (end - start) + "ms.");} catch (Exception e) {System.out.println("========Error:⽂档转换失败:" + e.getMessage());}finally {if (app != null){app.invoke("Quit", new Variant[] {});}}}}public static void main(String[] args){String source2 = "D:\\abc.xls";String target2 = "D:\\def.pdf";ExcelToPdf.excel2pdf(source2,target2);}jacob.jar1.将jacob-1.17-M2-x64.dll 放到java安装⽬录下: jdk1.X.X\jre\bin,即你的JDK安装路径下的jre中的bin中;2.将jacob-1.17-M2-x64.dll放到tomcat的bin下⾯;3.将jacob-1.17-M2-x64.dll 放到C:\Windows\System32接着将jacob.jar⽂件放在eclipse中项⽬的lib⽂件夹下,具体为找到项⽬的⽬录,进⼊web-inf⽬录下的lib⽬录下,将jacob.jar放进去;。
WebGIS在林业资源管控中的运用研讨论文
WebGIS在林业资源管控中的运用研讨论文WebGIS在林业资源管控中的运用研讨论文目前,WebGIS的实现技术主要有3种方法:一是通用网关接口技术方法。
二是应用程序插件技术方法。
三是控件和分布式组件对象模型构件技术方法以及公用对象请求代理体系结构技术方法。
目前第三种方法占主导地位,在应用方面,COR-BA/Java明显优于DCOM/ActiveX,但是就技术标准而言,COR-BA/Java和DCOM/ActiveX仍难分优劣。
CORBA/Java的最大优势仍然在于其跨平台能力,但在运行速度上仍然不如DCOM/Ac-tiveX。
DCOM/ActiveX目前还只能运行于32位Windows系列操作系统,但是Windows系列操作系统的市场占有率达80%以上,在Internet客户端,其占有率则可能更高。
因此,究竟选用何种规范来开发WebGIS,需要根据软件的设计目标来权衡各方面的因素。
如果使用矢量图形,由于目前浏览器不支持矢量图形,而GIS主流以矢量图形为处理对象。
因此,可通过在客户机端事先安装插件或者运行时自动下载JavaApplet或ActiveX控件,依此来扩展浏览器的功能。
如果在客户端使用栅格图像,不需要任何额外程序。
但这时,需要在服务器端提供相关软件,实现矢量图形向Web浏览器支持的图像格式(GIF或JPEG)的转换,然后传送到客户端,客户端的一些请求则通过CGI或ASP发送到服务器端。
WebGIS软件很多,比较流行的有ESRI的MapObjectsIMS和ARCIMS、MapInfo公司的MapXtreme、Intergraph公司的Geo-MediaWebMap以及著名的CAD厂商Autodesk公司推出的Mapguide,还有国产的GeoSurf等。
其中GeoSurf软件网络传递的图片格式为GeoSurfDH(矢量数据),GeoMediaWebMap软件网络传递的图片格式为ActiveCGM(栅格图和矢量图),其他均为JPEG(栅格图)。
网页制作课件
网页美化工具
为了使制作的网页更为美观,用户在利用网页制作工具制作 网
页时,还需利用网页美化 工具对网页进行美化。
1.Photoshop
Photoshop是由Adobe公司开发的图形处理软件,它是目前 公认
的PC机上最好的通用平面美术设计软件,它功能完善、性能稳定、 使用方便,所以在几乎所有的广告、出版、软件公司,Photoshop 都是首选的平面制作工具。
符。 5.在域名中,不区分英文字母的大小写和中文字符的简繁体。
6.对于一个域名的长度是有一定限制的
域名申请的流程
制作并测试网页
当所有的网页制作完之后,需要对所设计的网 页进行审查和测试,测试内容包括功能性测试和完整性测试两个方 面。
所谓功能性测试就是要保证网页的可用性,达到最初的内容组 织设计目标,实现所规定的功能,读者可方便快速地寻找到所需的 内容。完整性测试就是保证页面内容显示正确,链接准确,无差错 无遗漏。
如果在测试过程中发现了错误,就要及时修改,在准确无误后, 方可正式在Internet上发布。
网页上传发布
当网页测试通过后,就可以把制作的网页上传到申请的空间 中去。
网站的类型
网站的类型
• 第一类:网上求职 • 第二类:网上聊天/即时信息/ICQ • 第三类:网站社区/讨论邮件列表 • 第四类:计算机技术 • 第五类:网页/网站开发 • 第六类:娱乐网站 • 第七类:旅行 • 第八类:参考/资讯 • 第九类:家庭/教育 • 第十类:生活/时尚
网站名称的选择
一般建议按以下规则取名: 1.名称要正气 2.名称要易记 3.名称要有特色
(2)网络空间的类型以及它们的区别
免费空间。
1.不稳定,还说不定哪天就没有了,用免费主 机要记得备份!
中间件技术论文
一、摘要中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。
人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软和实用软件区分开来。
它隐藏了计算机体系结构、操作系统、编程语言和网络技术等方面的异构性,将复杂的协议处理、分割的内存空间、数据复本、网络故障、并行操作等问题与应用程序隔离开来,为上层应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
中间件已成为构建现代分布式应用、集成系统的一种不可或缺的成分,数据访问、企业资源规划、多媒体、无线/移动计算、电子商务、网格等都是它的典型应用领域。
中间件技术屏蔽了底层分布式环境的复杂性和异构性,简化了分布式应用程序的开发,使分布式应用程序的健壮性、可扩展性、可用性更好。
本文介绍了中间件的定义、分类、主流中间件技术平台,分析了中间件技术面临的挑战,提出了中间件技术研究的几个发展趋势,即网格技术、面向移动计算、面向服务质量等。
二、关键词:中间件分类技术平台发展趋势计算机系统最初阶段多是单机系统,多个用户是通过联机终端来访问。
随着网络的出现,产生了客户/服务器的计算服务模式,多个客户端可以共享数据库服务器和打印服务器等。
随着计算机和网络技术的飞速发展,许多软件需要在不同厂家的硬件平台、网络协议异构环境下运行,应用的规模从局域网发展到广域网,应用范围面向三层和多层体系结构的分布式环境,在分布式环境中,无论是硬件平台还是软件平台都不可能做到统一,而大规模的应用软件通常要求在软硬件各不相同的分布式网络上运行。
中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,开发者不得不直接面对许多复杂棘手的问题,如操作系统的多样性、繁杂的网络程序设计和管理、复杂多变的网络环境、数据分散处理带来的不一致性问题等等,这些与用户的业务没有直接关系,但又必须解决,耗费了大量的时间和精力,因此开发者迫切需要一种基于标准的、独立于计算机硬件以及操作系统的开发和运行环境,于是,中间件技术应运而生。
基于ASP的企业网站的设计与实现--图书电子交易系统1
第1章引言1.1 课题背景目前,Internet和计算机网络技术的蓬勃发展,网络化和全球化已成为不可抗拒的世界潮流。
个人要生存,企业要发展,就必须采取新的生存方式、竞争手段去适应它。
面对Internet本身所具有的开放性、全球性、低成本、高效率等特点,传统商业暴露的问题也越来越明显,原有的商业格局、商务运作模式在Inte rnet面前也显得无能为力,客观形势给传统商务工作带来了压力和动力。
机遇和挑战、条件和可能,挑战是现实的,机遇是潜在的,所以迫使我们必须重组原有的商业格局,变革原有的商业模式来契合Internet的发展以取得最大的效益。
连通全世界的电子信息通道已经形成,应用Internet网开展电子商务(Electroni c Commerce)业务的时机已经成熟。
电子商务是主要以Internet 网为架构,以交易双方为主体,以银行支付和结算为手段,以客户数据库为依托的全新商业模式。
实际上,电子商务是一些商业行为的电子化,例如网上商店、网上贸易等。
就网上商店来说,网上书店是目前应用最广、最成功的典范之一。
随着网络的普及,人们生活水平的提高,业余生活也变得丰富多彩,网上购书成为一种时尚。
图书电子交易系统是为了适应现代化的生活方式和购物理念而形成的一种新型购物方式。
有了它作为媒介,消费者能够不用出门在家里就可以轻轻松松购得心仪的图书。
丰富多彩的网上图书资源、价格实惠的最新图书、服务优良送货上门的购物方式,已成为人们休闲、购物两不误的首选方式。
网上书店的崛起对传统的图书流通体系产生了强烈的冲击,有效地缩短了图书流通发行环节,将广大读者、图书、出版者、发行者紧密地结合在一起,大大提高了图书流通率。
文中介绍的整个图书电子交易系统构建在Microsoft公司的系统平台与环境下,操作系统是WindowsXP,Web服务器是IIS5.1,数据库服务器是SQL Server 2 000,服务器端脚本编程环境是ASP再嵌入VBScript、JavaScript。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
论Java访问COM/ActiveX
Java作为一种跨平台的语言,在很多环境下都获得了成功。然而,在Windows平台下,Java的
发展却受到了一定程度的限制。其中很重要的原因就是,目前Java对Windows构件模型的支持
力度不够,使得Java程序很难复用Windows平台下丰富的构件资源,例如日历、制表、Word
等各种控件(COM/ActiveX)。
Windows构件模型是基于COM的,目前JDK没有提供任何直接访问COM的类库。因此,如果需要
访问这些资源,我们必须通过JNI实现。JNI是Java世界和其它语言间的一座桥,Java通过访
问JNI定义的接口来获取服务。在JNI的另一面,我们可以通过C/C++或其它语言实现这些接口。
通过本地语言C/C++我们可以创建COM构件,并且使用COM的服务,最后将结果返回给Java程
序。
在这里,我们涉及到几个关键问题。
1)数据类型的转换。
Java和其它的语言定义的数据类型不尽相同,这使得我们需要对这些数据的进行类型转换。在W
indows中,自动化COM对象使用VARIANT 作为其主要数据类型。VARIANT类型是对普通类型的
一个封装,我们很容易将它转换成Java对应得类型。例如,VARIANT中的 VARIANT_BOOL可以直
接对应Java中的boolean。但是,一些其它数据类型的转换看起来就比较麻烦,例如SAFEARRA
Y和一些指针。因此,在实现中通常在Java中定义一些Wrapper类型。
2)GUI处理
Windows下有大量ActiveX控件,都提供了界面服务。这些类的封装性都非常好,具有很高的复
用性。这些类实现了 IDispatch接口,因此它们的使用也比较简单。但是,Java的窗口管理与
Windows的窗口管理有很大差异。Windows利用句柄管理窗口。 Java通过窗口类管理,对于重
型构件(AWT窗口),每一个构件都有一个同位体,即存在一个本地窗口与之对应。对于轻型构件
(Swing的大部分类),它们都没有同位体。因此,我们可以考虑在重型构件上放置ActiveX控件。
以下我们给出一个例子说明,说明如何使用同位体技术,实现在Java的Panel上放置一个IE
控件。
首先,在Java 程序中我们通过同位体的方法,获一个Panel的同位体的窗口句柄。其中句柄用
一个int表示。
public int getHWND()
{
int hwnd = 0;
DrawingSurfaceInfo drawingSurfaceInfo = ((DrawingSurface)(getPeer())).getDrawingSur
faceInfo(); //获取同位体信息
if (null != drawingSurfaceInfo)
{
drawingSurfaceInfo.lock();
Win32DrawingSurface win32DrawingSurface = (Win32DrawingSurface)drawingSurfaceInfo.g
etSurface();
hwnd = win32DrawingSurface.getHWnd();//获取同位体窗口句柄
drawingSurfaceInfo.unlock();
}
return hwnd;
}
然后,我们在通过JNI方法,将这个句柄传递给C/C++程序。C/C++程序通过这个句柄创建Acti
veX,这样就可以实现将IE的ActiveX放在Java的Panel中。该例子使用ATL,并使用了相关
的数据类型,如CComPtr等。
//产生IE控件
void CreateIEControl(ThreadParam *pThreadParam)
{
AtlAxWinInit();
// 第2个参数表示控件的ProgID或者 UUID,此例中使用IE控件。
HWND hwndChild = ::CreateWindow("AtlAxWin",
"Shell.Explorer.1",
WS_CHILD|WS_VISIBLE,
0,0,0,0,
pThreadParam.hwnd,NULL,
//其中pThreadParam.hwnd就是在Java中获取得据柄,作为父窗口。
::GetModuleHandle(NULL),
NULL);
IUnknown *pUnk = NULL;
AtlAxGetControl(hwndChild,&pUnk);
//让IE访问pThreadParam.szURL所代表的URL
CComPtr spBrowser;
pUnk->QueryInterface(IID_IWebBrowser2, (void**)&spBrowser);
if (spBrowser)
{
CComVariant ve;
CComVariant vurl(pThreadParam.szURL);
spBrowser->put_Visible(VARIANT_TRUE);
spBrowser->Navigate2(&vurl, &ve, &ve, &ve, &ve);
}
}
3)事件通知
在COM中,外部事件通知是通过可连接对象实现的,客户程序通过访问COM组件的出接口,以实
现登记一个事件的接收器。这种事件通知模式和Java的事件代理模式非常类似。因此,如果要
在Java中实现COM的事件通知,就要在Java程序中实现自定义事件监听类,并将COM 的事件
接收器登记在Java程序中。这样,COM的事件就可以通知到Java程序。
本文只是浅析了Java访问COM的基本原理,在实际应用中,虽然可能有不同的解决方案,但基
本原理都上文所述。另外,一些机构和个人提供了一些 Java和COM的软件包,使得这种访问更
加方便。例如,JavaCom 、Jacob和IBM提供的eclipse软件包等等。