2011年5月5日星期四

applet授权数字签名【转】

一、压缩你的class类文件为jar包
1.假设你的需要压缩的类文件存在的包为:cn.mbq.test1和cn.mbq.test2
2.进入你的classes目录,在DOS窗口中执行命令:jar cf mytest.jar cn.mbq.test1 cn.mbq.test2
3.执行命令后你会在当前目录中找到mytest.jar文件,这个就是刚才生成的档案文件。你可以修改它的后缀为rar,然后使用winrar压缩程序打开它查看看是否正确。
jar -cvf MyApplet.jar class
打包文件夹下所有class jar -cf MyApplet.jar com\company\applet

二、使用keytool工具生成密匙库
1.keytool工具位于${java_home}/bin目录下;
2.在DOS窗口中执行命令:keytool -genkey -keystore mytest.store -alias mbq
注意:mytest.store 是你的密匙库的名称,可以随意修改,后缀请不要修改!
mbq 为别名,这个也可以改成自己的名称
3.执行上述命令后,DOS窗口中会提示你输入keystore的密码、你的姓名、组织单位等等信息。这里要注意的是输入密码请记住,后面要用到的。在最后,我们输入y确认信息。然后再直接回车设置mbq的主密码和store密码一致即可!


三、使用keytool工具导出签名时用到的证书
1.在DOS窗口中执行命令:keytool -export -keystore mytest.store -alias mbq -file mbq.cert
注意:mytest.store 就是第二步生成的密匙库名称
mbq 也是在第二步中我们指定的别名
mbq.cert 为我们生成的证书的名称,可以自己修改名称,注意后缀不要改
2.命令执行成功,我们会在当前目录下找到一个mbq.cert文件,这个就是我们刚才生成的证书。


四、使用jarsigner工具签名jar压缩文档
1.jarsigner工具位于${java_home}/bin目录下;
2.在当前DOS窗口中执行命令:jarsigner -keystore mytest.store mytest.jar mbq
注意:mytest.store 就是我们在第二步中生成的密匙库名称
mytest.jar 就是我们这第一步压缩的jar文档
mbq 是提供者的名称,我们这里设置为我们的别名

再运行的Applet就可以访问本地了

嵌入Applet部分的写法:

OBJECT对象中的CODEBASE指的路径是相对当前页面的路径,是可以有效的.最后部署的时候只需要签名后的jar包就可以了,其他的文件都不需要



关于Html嵌入Applet的问题
 标签的属性介绍
  属性     含义
  Width  Applet在Html页面上的宽度
  Height  Applet在Html页面上的高度
  Name  Applet在Html页面上的名称,用于区名一个Html页面上的多个Applet
  Code  Applet类名,必须带后缀”class”当没有属性archive时,直接写类名当有属性archive时,必须带包名
  Codebase Applet的类相对路径,相对于Html页面位置
  Archive  Applet所在Jar包的文件名

 标签< PARAM>的属性介绍
  属性     含义
  Name  Applet传入的参数名
  Value  Applet传入的参数值

 当Applet 为一个Class类文件嵌入的写法
 属性Code ==========Applet类名,必须带后缀名
 属性CodeBase ---------------Class类文件相对于Html页面的相对路径

 Applet为一个JAR包,嵌入Html的写法
 属性Code ==========Applet类名,包括包名
 属性CodeBase ----------------Applet JAR包相对于Html页面的相对路径
 属性Archive -----------------------Applet Jar包文件名

对于需要授权的applet(如读取本地文件),进行数字签名后,在paint方法中可以读取本地文件,但放在自定义的方法中,通过js调用自定义的方法还是提示没有权限,不解

可以通过再建立一个线程类,在run方法中调用applet中读取本地文件的自定义方法,线程类可以在applet中的初始化方法init中建立,applet类当做参数传给线程类





JavaScript访问Applet

//JavaScript访问Applet属性
window.document.appletName.appletField (属性必须是public的,"window.document."也可以不写)
/JavaScript访问Applet方法
window.document.appletName.appletMethod (方法必须是public的,"window.document."也可以不写)

var result = appletName.appletMethod ("param"); //调用applet带参数的方法和有返回值的方法

打包jar文件必须把applet引用到的类全部打包进去,否则调用方法会找不到(对象不支持此属性或方法),或一些其他错误

文章转自:http://blog.csdn.net/zhaoyh82/archive/2009/05/19/4200897.aspx

没有评论: