前言 IT学习者()
项目要求连接读卡器读写IC卡。由于项目是用PHP开发,所以刚开始设计的是用PHP连接读卡器(几个人还都没察觉有什么问题,汗)。 内容来自
顺便说一下PHP如何读取硬件. IT学习者()
第一种:开发PHP标准的extension,此种方法开发难度较高,但是后期维护很容易。
第二种:写个COM组件注册到系统里,然后PHP调用COM组件。此种方法实现比较容易,但是维护较复杂,需要用regsvr32注册COM组件。
itxxz.com
最后讨论决定用第二种比较简单的方法(到这里还是没察觉任何问题。汗)
路子选好了,说干就干,热火朝天的忙了两天,用VB写了个COM组件,然后注册到系统里.很显然功能实现了(欣喜若狂,但是还未察觉任何不妥).于是打包交给组长,组长试了试,也没什么问题。都以为就这么完事了。孰料第二天,组长突然提出了一个很严重的问题,PHP是在服务器端运行的,而读卡器是连接在客户端的。applet数字签名之前测试的客户端服务器端都在一台电脑上面,真正项目部署是不可能这样.瞬间就石化了,屁颠屁颠忙了两天,忙的跟真的一样
可是项目还是要做的,生活还是要过的,赶鸭子也是得上架的。苦思冥想十几分钟.既然是客户端读取硬件,必须用浏览器的插件实现,于是瞬间想到了老本行Java里面的applet.觉得这是一条可以走通的路,没办法,摸着石头过河也得过啊。一步一步走吧.
itxxz.com
最简单的applet 内容来自
第一步,首先弄明白applet怎么实现(说实话,以前真没写过applet).网上查了些资料,编码也不是很难.代码大致如下(由于是在家写的,代码在公司,所以只能凭记忆大概写点了)
//Java代码
本文来自
itxxz.com
//HTML代码
内容来自
itxxz.com
IT学习者()
IT学习者()
记得要javac ICCARD.java.然后把html和class放在同一目录下,浏览器打开,根据你的安全设置,会有不同提示,一般IE默认会提示是不安装Activex控件,同意即可,Firefox则没有提示,直接就运行了(个人还是比较喜欢Firefox的,尤其里面的firebug).
内容来自
applet和JavaScript合体
IT学习者()
大多数情况下,我们的Applet都不可能只有一个方法,所以如何执行我们想要的方法呢,换句话说就是如何和JavaScript交互呢。
//Javascript Code 官网:
其实Javascript和Applet交互就这么简单(注意,这里是JavaScript调用Applet,不是Applet调用JS.关于Applet中调用JS,可自己搜索相关资料). 官网:
如果hello()有返回值的话,JS还可以接受返回值。
最简单的JNI 内容来自
第一个主要模块Applet已经基本实现,按照我们的设想,applet下载到客户端执行,然后读取客户端的dll.貌似行的通.所以接下来的关键问题就是Java 如何读取dll,换句话说就是Java如何和其他语言协同工作,很明显,JNI闪亮登场。接下来主要就是解决JNI的问题,所以我们暂且抛开applet的环境,用最最简单的方法调试JNI. 官网:
//Java Code
官网:
IT学习者(.itxxz.com)
官网:
Java要做的就这么多,具体的实现就交给C++了(我用的是VC6.0) 本文来自
第一步生成class文件 javacHello.java 内容来自
第二部生成C++引用的头文件javah Hello.生成文件内容如下 itxxz.com
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31869-1.html
不过比起克林顿时期的直接上船搜索银河号以及驻南使馆被精确攻击好很多了