这里我们只关心那个方法,把方法copy到下面的c++source file里面
第三部具体的C++代码实现.
新建dll工程->新建c++ source file 官网:
//c++ code 内容来自
内容来自.itxxz.com
不用怀疑c++代码就这么简单,但是jni.h和Hello.h的路径要设置正确,编译器才能找到这两个文件 内容来自
jni.h在jdk/include下
jni.h里面还会包含一个jni_md.h,在jdk/include/win32目录下
Hello.h就随便你放了 IT学习者()
然后编译dll,就会生成我们需要的dll文件. itxxz.com
这个dll的文件名,就是我们在java代码中System.loadLiberary("Hello")里面的这个参数,大小写无所谓,后缀名不需要,会自动识别。 内容来自
System.loadLiberary()这个方默认搜索几个目录,把dll放在正确的目录下,JVM就能自动加载了.然后我们的native就能运行了。
java Hello,控制台输入Hello C++; IT学习者()
这里只是提供了一个JNI最简单的实现,更详细的JNI编程,如参数传递等请参考 官网:
本文来自
上面我们的JNI是没有在applet环境下运行的,下面就要把Applet和JNI结合起来了。applet数字签名
本文来自
IT学习者(.itxxz.com)
//C++ code
本文来自
IT学习者(.itxxz.com)
//JS Code 官网:
这里几个主要的代码就这样,至于其他次要的工作,由于时间有限,就不再一一赘述.
官网:
到了这里我们发现,由于Applet是在客户端运行的,那么我们如何把我们的dll也放到客户端呢.
打开浏览器,结果失败了,同志们就不要再试了。 itxxz.com
那么最简单的方法,就是手动拷贝到客户端(至于自动用Applet下载到客户端,我没有尝试过,有兴趣可以试试).把我们的dll拷贝到system32下.(由于我们项目的客户端比较少,比较单一,所以还不至于被骂). IT学习者()
再打开浏览器运行,如果前面步骤都没问题的话,浏览器应该会报access denied错误.紧要关头,突现离奇错误,为虾米呢?请听下文分解.
IT学习者()
applet数字签名
内容来自
其实动动脚指头就能想得通了,为了安全,applet不可能具有肆无忌惮的权限,想读就读,想写就写,那样网络世界就乱套了。applet默认的安全机制是阻止对客户端的任何操作的(必须阻止).那我们就要想办法允许applet有读写权限。又接着去网上查了许多资料,发现有的人说可以读写,有的人说不能(我的心凉了一半啊,都进行到这一步了,我容易吗我),但是不管怎样,只要还有希望,就要继续努力.按照网友们给出的方法,对applet的jar包签名.
IT学习者()
首先把.class都打成jar包:jar -cvf iccard.jar *.class 本文来自
然后用jdk/bin目录下的keytool生成.store文件:keytool -genkey -keystore iccard.store -alias Mission -validity 999.这样会提示你输入一些信息,最后时候确认即可.
最后用jdk/bin下的jarsigner给jar文件签名 jarsigner -verbose -keystore iccard.store iccard.jar Mission.会提示你输入密码,然后会打印出签名的过程(verbose参数的作用). IT学习者()
关于applet签名的过程,可以去百度“applet签名”,由于以上只凭记忆写的,所以难免有不准的地方。 官网:
好了,这下我们的jar包可厉害了,它已经不是一般的jar包了,它是一个签过名的jar包,一个具有对客户端读写权限的jar包.好了,现在让我们满怀期待的打开浏览器,嗯,IE提示是否允许Active,允许,然后就跳出窗口让我们验证签名,允许。。然后,OMG,顺利执行了,然后,然后就没有然后了。
虽然功能可以实现,可以跨浏览器,但是缺点也是比较多的。
IT学习者()
1.首先,要把我们的dll拷贝到客户端。
2.其次,客户端还要装JRE
由于我们的客户端用IC读卡器的比较少,所以这至少还是一个行之有效的方案,如果面向客户比较多的话,我觉得可一开发BHO(浏览器帮助对象).这已经不是本文讨论范围. 内容来自
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31869-2.html
rio其实很好喝年初开始接触喝了一个多月之后就开始断货之后再买到的就不是rio了
美舰吓破胆跑了
千千加油相信自己你最棒