首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

javascript 与applet的通讯 和java与c(dll文件)通讯,最终在b/s架构上实现与硬件(读卡器)通讯

2012-10-28 
javascript 与applet的通讯 和java与c(dll文件)通讯,最终在b/s架构下实现与硬件(读卡器)通讯??? ?javascri

javascript 与applet的通讯 和java与c(dll文件)通讯,最终在b/s架构下实现与硬件(读卡器)通讯

??? ?javascript 与applet的通讯 和java与c(dll文件)通讯,最终在b/s架构下实现与硬件(读卡器)通讯

?在b/s架构下怎样实现客户端的硬件(读卡器)设备通讯,得到硬件(读卡器)的数据。在此与硬件设备通讯的C或其它的通讯设备语言是由
?商提供的。我只负责实现javascript与applet通讯和jni与c通讯.在此我们要解决的问题是:
? 1)javascript和applet怎样通讯?
? 2)java怎样调用c来实现和硬件通讯?
? 3)由于applet的安全级别非常的高,那么怎样实现安全认证或数字签名?
? 4)由于在B/S架构下程序一般放在服务器端,那么怎样来实现对客户端的硬件(读卡器)操作呢?
  用一个实现实例来说明上述问题:
  1)写一个java程序利用jni来调用用c产生的dll(动态连接库)如下HelloWorld.java

? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
? <html>
? <head>
? <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
? <title>无标题文档</title>
? <script language="JavaScript">
? function changeUserName(){
???? aaa = new String(document.form1.UserName.value);
???? document.myApplet.setUserName(aaa);
???? var s = document.myApplet.getUserName();
???? document.myApplet.test();
???? var ss = document.myApplet.getUserName();
???? alert(ss);
???? document.form1.UserName.value = ss;
???? document.myApplet.repaint();
???? return false;
? }

? </script>
? </head>

? <body>
? <table>
? <tr>
??? <td align="center" >
??????? <applet ID='myApplet' Name='myApplet' code='Applet1.class'? width='120' height='30' codebase=".\jar" archive="monitor.jar">
??????? </applet>
??? </td>
??? <td align="center" valign="bottom" nowrap>
??????? <form name=form1 >
????? Your Name:<input name=UserName size=10>
??????? <input type=Button name=Btn value="Change Name" language="JavaScript" onclick="return changeUserName();">
??????? </form>
??? </td>
? </tr>
? </table>
? </body>
? </html>

7)对刚才编译出来的文件进行打包,这样有利于applet的下载速度。
???   jar cvf monitor *.*
??? 8)部署web程序
??? 9)对客户端修改安全权限文件。此文件在jdk的安装目录下。但测试发现在C:\Program Files\Java\j2re1.4.2_06\lib\security也有一个安全文件,也许是浏览调用的安全文件,就修改它。
java 代码

?

  1. /*?AUTOMATICALLY?GENERATED?ON?Thu?Feb?24?09:23:05?CST?2005*/??
  2. /*?DO?NOT?EDIT?*/??
  3. ??
  4. keystore?"file:/C:/j2sdk1.4.2_06/jre/lib/security/cacerts",?"JKS"; ??
  5. ??
  6. grant?codeBase?"file:${java.home}/lib/ext/*"?{ ??
  7. ??permission?java.security.AllPermission; ??
  8. }; ??
  9. grant?signedBy?"monitor",??codeBase?"http://192.168.1.35:8080/"?{ ??
  10. ??permission?java.security.AllPermission,?signedBy?"monitor"; ??
  11. ??permission?java.lang.RuntimePermission?"usePolicy"; ??
  12. ??permission?java.lang.RuntimePermission?"createClassLoader",?signedBy?"monitor"; ??
  13. ??permission?java.lang.RuntimePermission?"getClassLoader"; ??
  14. ??permission?java.lang.RuntimePermission?"setContextClassLoader"; ??
  15. }; ??
  16. ??
  17. grant?{ ??
  18. ??permission?java.lang.RuntimePermission?"stopThread"; ??
  19. ??permission?java.net.SocketPermission?"localhost:1024-",?"listen"; ??
  20. ??permission?java.util.PropertyPermission?"java.version",?"read"; ??
  21. ??permission?java.util.PropertyPermission?"java.vendor",?"read"; ??
  22. ??permission?java.util.PropertyPermission?"java.vendor.url",?"read"; ??
  23. ??permission?java.util.PropertyPermission?"java.class.version",?"read"; ??
  24. ??permission?java.util.PropertyPermission?"os.name",?"read"; ??
  25. ??permission?java.util.PropertyPermission?"os.version",?"read"; ??
  26. ??permission?java.util.PropertyPermission?"os.arch",?"read"; ??
  27. ??permission?java.util.PropertyPermission?"file.separator",?"read"; ??
  28. ??permission?java.util.PropertyPermission?"path.separator",?"read"; ??
  29. ??permission?java.util.PropertyPermission?"line.separator",?"read"; ??
  30. ??permission?java.util.PropertyPermission?"java.specification.version",?"read"; ??
  31. ??permission?java.util.PropertyPermission?"java.specification.vendor",?"read"; ??
  32. ??permission?java.util.PropertyPermission?"java.specification.name",?"read"; ??
  33. ??permission?java.util.PropertyPermission?"java.vm.specification.version",?"read"; ??
  34. ??permission?java.util.PropertyPermission?"java.vm.specification.vendor",?"read"; ??
  35. ??permission?java.util.PropertyPermission?"java.vm.specification.name",?"read"; ??
  36. ??permission?java.util.PropertyPermission?"java.vm.version",?"read"; ??
  37. ??permission?java.util.PropertyPermission?"java.vm.vendor",?"read"; ??
  38. ??permission?java.util.PropertyPermission?"java.vm.name",?"read"; ??
  39. ??permission?java.lang.RuntimePermission?"createClassLoader"; ??
  40. ??permission?java.lang.RuntimePermission?"getClassLoader"; ??
  41. ??permission?java.lang.RuntimePermission?"setContextClassLoader"; ??
  42. ??
  43. ??permission?java.security.AllPermission; ??
  44. ??permission?java.lang.RuntimePermission?"usePolicy"; ??
  45. ??permission?java.lang.RuntimePermission?"createClassLoader"; ??
  46. ??permission?java.lang.RuntimePermission?"getClassLoader"; ??
  47. ??permission?java.lang.RuntimePermission?"setContextClassLoader"; ??
  48. }; ??
  49. ??
  50. grant?{? ??
  51. ?permission?java.lang.RuntimePermission?"loadLibrary.hello";? ??
  52. };???

?

10)在客户端配置dll。在环境变量path中设置dll所在的位置。
?就这样应该大功告成了,

不知道各位有没有这样的需求,有没有更好的方法呢? 能给出意见和建议吗?谢谢

?

1 楼 爱我靠边站 2007-04-24   觉得有用。支持你继续发表 2 楼 soleegn 2007-05-04   对JAR包进行签名就不用改客户端配置了 3 楼 fellow99 2007-05-05   这么累人,为啥没有COM,要用applet呢 4 楼 hgq0011 2007-05-07   <p>fellow99 写道这么累人,为啥没有COM,要用applet呢</p>
<p>用Applet确实有些麻烦。</p>
<p>能告诉我怎样使用COM实现这样的功能吗?谢谢!</p>
<p>?</p>

热点排行