项目中使用的是APPLET打印,在实现过程中遇到一些问题,特总结如下。
首先要将Applet数字签名,授予访问本地资源,读写权限设置
步骤一:将Applet Class打成Jar包
jar -cvf MyApplet.jar .
步骤二:生成证书及签名
1、keytool -genkey -keystore 7csky.store -alias 7csky
这个命令用来产生一个密匙库,执行完毕后应该在当前目录中产生一个7csky.store的文件,这里的7csky是我自己定义的名字,你可以对它进行修改。另外在执行命令的时候还有提示你输入密匙库的密码,这里你一定要记住,否则后面要用的时候无法输入。
2、keytool -export -keystore 7csky.store -alias 7csky -file 7csky.cert
这个命令用来产生签名时所要用的证书,同样这里的7csky也可以换成你自己需要的名字。这个命令执行完后在当前目录中产生一个7csky.cert的文件。
3、 jarsigner -keystore 7csky.store MyApplet.jar 7csky
这个命令用上面产生的证书将我们的jar文件进行了签名。
步骤三:新建一个策略文件,并把这些策略文件加入(修改文件)
1.新建applet.policy的文件,其内容如下:
keystore "http://192.168.200.35/JYDA/security/7csky.store","JKS";
grant signedBy "7csky"{ permission java.io.FilePermission "<<ALL FILES>>", "read,write";};
grant signedBy "7csky"{ permission java.io.FilePermission "<<ALL FILES>>", "read,write";};
代表授与当前已经签名的APPLET对文件系统的所有文件读写权限。
2、 修改${java.home}/jre/lib/security目录下的java.security,找到下面这两行:
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
第二行代表当前用户的策略文件。一般都没有。
在下面添写第三行
policy.url.3=http://192.168.200.35/JYDA/security/7csky.store
完成这个修改后我们在前面创建的applet.policy文件才有效。
另外,在使用APPLET打印时,即使已经对APPLET签名了,有些浏览器还是会弹出有APPLET请求打印机操作的警告框,需要在策略文件中增加如下配置。
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "127.0.0.1:1024", "listen,connect";
注意:
在linux下的firefox中试了一下,发现有时firefox无法正常显示applet。发生这种情况的原因是由于firefox未安装jdk插件,读者可按如下的方法为linux版的firefox安装jdk插件:
jdk插件的库文件是libjavaplugin_oji.so,这个文件在<JDK安装目录>/jre/plugin/i386/ns7目录中,其中ns7根据当前jdk版本不同而有所差异,但前两个字母都为ns。在linux下,jdk一般都安装在/usr/java目录中。
找到libjavaplugin_oji.so文件后,再进行<firefox的安装目录>/plugins目录中,使用如下的命令为libjavaplugin_oji.so文件添加一个符号链接:
ln -s <jdk安装目录>/jre/plugin/i386/ns7/libjavaplugin_oji.so
重启Firefox,再访问applet.jsp页面,就可以正常显示applet了。
另:在html页面中,用javascript调用applet的方法时,同样不能访问客户端本地文件。只有在applet内部才可以访问本地文件。
分享到:
相关推荐
jasperreport+applet客户端打印demo
applet请求servlet,然后servlet读取文件流,并把文件流返回给applet,供applet打印
zebra Applet打印
jasperreport 报表打印客户端使用applet打印。
最近要用javaapplet开发项目,在csdn上搜过了applet的用法和例子进行下载,还有一些网上比较好的教程全都整合了起来。内置有: Java+Applet实例讲解(分为1和2两部分)、Java+Applet实例编程、java+Applet登录、Java...
Applet做的一个小游戏,多指教。Applet做的一个小游戏,多指教。
Applet就是使用Java语言编写的一段代码,它可以在浏览器环境中运行。 与Application的区别主要在于其执行方式的不同。 <br> application 是从其中的main() 方法开始运行的,而Applet 是在浏览器中运行的,必须...
Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet
Applet录音
java applet实例讲解给你学习applet的捷径!!
Java燗applet+jasperReport 实现web端打印
一些JavaApplet小程序应用源码例子集,包括小应用程序与应用程序组合、在Applet中弹出窗口、通过HTML文件向Applet传递参数、swing的使用等。
当你applet要进行客户端操作时,如读取本地文件,沙箱原理使你的applet必须得到信任,此时对applet进行签名就可以解决这个问题
Applet网页游戏开发、Applet网页游戏开发
applet ,applet code ,applet source code
在eclipse中运行java applet时的一些问题,无法显示图片。
applet报告applet报告applet报告
applet 图片 扫描 java web applet 图片 扫描 java web
Java教程之Applet介绍
目前常见的智能IC卡运行着JavaCard虚拟机,智能IC卡上可以运行由精简后的Java语言编写的卡应用(简称Applet)。智能IC卡的Applet不能自己启动,必须由外部终端(例如POS机,地铁刷卡终端等)向卡片发送Select命令,...