Java Html嵌入applet 来读取客户端串口
写在前面,之前没搞过html嵌入applet来读取本地客户端串口,就直接使用RXTXcom.jar 来直接读取本机串口,这个是没问题的如下:
RXTX 有三个文件 有针对操作系统64 还有32的
1.RXTXcomm.jar 导入项目中
2.rxtxParallel.dll/rxtxSerial.dll两个dll放到jdk\jre\bin目录下。
防止运行过程中抛出 java.lang.UnsatisfiedLinkError 错误或 gnu.io 下的类找不到,请将rxtx解压包中的 rxtxParallel.dll,rxtxSerial.dll 这两个文件复制到 C:\Windows\System32 目录下即可解决该错误。
可以通过html调用java类来操作,直到有一次把服务端部署到另外一台设备上,在本地打开页面时发现不能读 。。。
欠考虑
html 可以通过嵌入applet来调用客户端的串口。
首先自己可以写一个applet类,如下:
public class HelloWorld extends JApplet {
public void paint(Graphics g) {
g.drawString("Hello Applet!", 5, 30);//绘制文本
g.drawArc(80,50,40,40,20,360);//绘制一个圆形
}
}
html页面写
<applet name="helloWorld" code="HelloWorld.class" codebase="." width="500" height="300">
</applet>
code:是你的类所在的位置:包名+类
codebase=“.” 这种写法就是 该类和html是在一个路径下如果不在一起这写你的类所放置的位置。
你可以把他们放到tomcat的ROOT目录下运行后,是这样子的。
你可以创建一个工程 ,直接运行该applet类,首先要保证该applet类是能运行的。
好了说重点了,网上都是说没问题,但是怎么配置都不暴露。
首先博主使用的jdk1.8 64位安装版,安装后需要到控制面板中找到Java 然后在安全里面把访问地址:如http://localhost:8080加入到例外站点。如图
博主使用的是chrome浏览器,注意 chrome浏览器的版本在大于42之后就不在支持applet了。所以要下载chrome42浏览器。网上有,就不在公布连接了。
chrome浏览器还要设置NPAPI插件 开启
地址栏输入:
chrome://flags/#enable-npapi
设置后是
然后 在安装java8目录下找到 安装的jre 找到C:\Program Files\Java\jre1.8.0_221\lib\security java.policy
在grant中加入 permission java.security.AllPermission;
到此 你打开你的html页面时 你应该就能看到该applet 图形了。
-----------------------------------------------------分割线------------------------------------------------------------、
jar的调用 首先把你的类打成jar包,博主使用的是myeclipse 可以直接右键导出时选择jar
如你设置证书、签名则使用如下步骤:cmd进入你的jdk安装目录 的jdk的bin目录下
1使用keytool工具生成密匙库 :
\jdk1.7.0_13\bin>keytool -genkey -keystore ScaleApplet.store -alias sa
2使用keytool工具导出签名时用到的证书 :
\jdk1.7.0_13\bin>keytool -export -keystore RXTXSerial.store -alias sa -file RXTXSerial.cert
输入**库口令:
存储在文件 <RXTXSerial.cert> 中的证书
3使用jarsigner工具签名jar压缩文档
\jdk1.7.0_13\bin>jarsigner -keystore RXTXSerial.store RXTXSerial.jar sa
输入**库的密码短语:
警告:
签名者证书将在六个月内过期。
jar包处理完毕后可以把该jar放到你的工程webroot文件夹下
页面调用是这样的:
<script type="text/javascript">
function getCard(){
var weight = document.helloWorld.getCardNo();//获取applet类里面的方法
if(weight!=null&&weight!=''){
document.getElementById("weightSpan").innerHTML=weight;
}
}
</script>
</head>
<body >
<applet name="helloWorld" code="rxtx.RXTXSerial.class" codebase="./rxtx/"
ARCHIVE="RXTXSerial.jar,RXTXcomm.jar" width="500" height="300">
</applet>
<span id="weightSpan"></span>
<button οnclick="getCard();">读卡</button>
</body>
</html>
至此Html页面调用applet流程完毕。本文是博主自己实测有效的流程,如对您有帮助,您可参考,无帮助勿喷。