applet 签名以及在网页运行时判断是否正常加载的简单方法

一、applet的签名

      

aplet 没有签名是无法读取本地文件的,选择文件的那个框也弹不出来,要按如下进行操作:

Applet受限于其“沙箱”安全模型,在正常的情况下是不允许其访问磁盘的任何内容的,然而在我们的实

际需求中,难免会有需要其可以访问磁盘的情景。
然而如何让Applet摆脱“沙箱”的限制呢?这需要我们通过数字签名来解决这个问题:

首先确保你的机器上注册了jdk环境变量,然后使用

keytool -genkey -keystore upload.store -alias supermap

生成一个supermap.store密钥库文件,别名为supermap。
然后就可以进行我们的数字签名操作了,在进行操作之前将你所需的class文件和相关资源文件一起打包

成jar文件,通过jar cvf test.jar package1 package2...将所有需要打包的文件一起打包为test.jar(

当然也可以通过 eclipse -> File -> export -> jar ....来打包)。
把jar 文件和supermap.store 放到同一个目录下 比如 E:\ 下
如果你的程序依赖于其他的类库jar文件,而该类库jar文件将可能会对磁盘文件进行访问,那么同样也需

要对该jar文件进行数字签名。
使用

jarsigner -keystore upload.store Down.jar supermap

对jar文件进行签名,在生成密钥库时指定某密码为123456,在此处生成密钥需要输入该密码123456。签

名完成便可以进行html文件的编写了。

在html文件中引用applet代码比较简单如下:
<applet codebase="." code="com.supermap.test.Test" archive="test.jar,com.supermap.data.jar

... "(此处可添加多个依赖库) width=1024 height-768></applet>,codebase为一个相对路径,用于指

明包所在位置,archive指向所有经过数字签名以及不需要签名的jar包和依赖库。

另附:访问随jar包一起发行的媒体数据如图片,需要注意一些细节。比如为某个JButton设置图片:
JButton button = new JButton();
ImageIcon icon = new ImageIcon(getClass().getResource("picName");
button.setIcon(icon);
此处的picName应为相对其class文件的媒体文件相对路径名,如在class文件所在目录下有一个Resources

目录用于存放媒体数据,picName为"Resouces/workspace_open.png"。测试通过。

在进行数字签名的时候,注意生成密钥库的目录应该和jar文件所在目录保持一致,即让keytool能找到密

钥库文件supermap.store。

<1>、生成密匙证书(key certificate),该证书将存储在你的.keystore文件中。Validity指的是密匙的

有效期,默认是180,但是这里我们需要一年的时间,所以我们设置为365 FileFtpApplet可自定义
keytool -genkey -alias FileFtpApplet -validity 365 -keystore FileFtpApplet.keystore
<2>、用我们的密匙来设计我们的APPLET
jarsigner -keystore FileFtpApplet.keystore FileFtpApplet.jar FileFtpApplet
<3>、导出证书
keytool -export -keystore FileFtpApplet.keystore -alias FileFtpApplet -file

FileFtpApplet.cer

 


二、页面加载applet,判断是否正常加载

页面加载applet时需要java环境,也就是java虚拟机,判断applet是否正常加载实际上就是在判断服务器

上有没有安装或符合要求的java虚拟机 。

关键是需要制定applet的id和code

判断如下:

<script type="text/javascript">
function testapp(){
 if(document.app.code){
  alert('已安装Java虚拟机');
}
else{
 //alert('未安装Java虚拟机');
 document.getElementById("java_jvm").style.display="block";
 document.getElementById("ftp_applet").style.display="none";
}
}
</script>  

<body>

<applet id="app"

              code="XXX.class"

              ..................(省略其余部分)

></applet>

</body>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值