标签归档:applet

java浏览器插件-applet

这两天项目中需要在浏览器中调用本地设备,研究了下java的applet,把学习笔记在此分享。

一,

首先需要建立一个继承import javax.swing.JApplet的类;

JApplet两个我比较关心的方法:

public void init()

:初始化applet时候会调用此方法,在生命周期中只调用一次,一般界面初始化代码写在这里,或者写在构造器方法中

public void destory()

:销毁方法,同样在生命周期中只调用多次。

另外还有 start() ,stop() 方法,可在生命周期中调用多次。

浏览器操作中方法调用顺序:

浏览器加载Applet:init–>start

浏览器刷新: stop–>destory–>init–>start

浏览器推出:stop–>destory

二,

applet写完后,就是用eclipse或者jar命令打包了,

打包后运行一些基本逻辑就没问题了。

但是如果要访问本地文件之类的操作可能就没这个权限了,解决办法是给jar包数字签名:

1,生成store证书文件scancard.store,scancard为自己指定的名字 :

keytool -genkey -keystore scancard.store -alias scancard

提示输入密码,记住自己输入的密码,下一步需要,其他的组织名,公司名等任意填写或一路回车 2,给jar包签名:

jarsigner -keystore scancard.store ScanCard.jar scancard

scancard.store为刚才生成的store, ScanCard.jar为刚才的jar包 ,最后的scancard貌似任意填写都可以 这样你的jar包权限就提升了,放在浏览器中就能做进一步的操作了 运行这个命令后如果你发现提示你证书6个月过期,可以在第一个命令后面加上如下参数指定有效期,单位(天),这里指定有效期为10年:-validity 3650
*这里好像还可以将证书导入,用于浏览器的某些认证,目前还没用到:

keytool -export -keystore scancard.store -alias scancard -file scancard.cert

三,

将jar包嵌入到html中:

两种方式:

1,jsp实现,

<jsp:plugin codebase="." archive="ScanCard.jar"
 code="com.cloudview.ScanCard.class" name="scanCardPlugin" width="0"
 height="0" type="applet">
 <jsp:fallback>您的浏览器不支持JAVA Applet,请更换浏览器,推荐用Chrome或Firefox</jsp:fallback>
 </jsp:plugin>

codebase为一般配置为”.”,表示jar包为当前路径

archive为嵌入的jar包

code为需要调用的applet class,貌似可以不写”.class”

name为自己指定的一个标志,可以任意写,这个为js调用提供的,后续会讲到,

*这里还能给applet传递参数,在jsp:plugin内加入如下代码:

<jsp:param name="param1" value="<%=#request.getAttribute("param1")%>" />

在applet类 init() 方法中接收方法:

String param1 = getParameter("param1");

2,html实现,

<applet codebase="." archive="ScanCard.jar" code="com.cloudview.ScanCard.class" name="scanCardPlugin2" width="0" height="0">
</applet>

这种貌似浏览器兼容性没有第一种好,但是,这种方法在有的浏览器中某些功能兼容性又更好。

参数同第一种

另外,javascript和applet可以互相访问,applet权限还可以进一步提高到操作调用本地设备,运行Runtime的exec方法以调用浏览器端的dos命令或shell命令,未完待续。。。见:下一篇

参考:http://www.cnblogs.com/ziziwu/archive/2012/03/21/2410159.html