昨天真郁闷....部门老大给我提出了一种难于想象的需求,通常我们从网站上下载文件都有IE弹出框。
而他对我的要求是:不要弹出IE对话框,点按钮后直接把文件保存到本地。
当时即时晕倒,都不知道是什么客户来的,居然有这种需求。-_-!
综合考虑后,我决定用applet在客户端运行一段代码。在客户端里用apache的开源项目httpClient模拟http请求(如输入用户名密码登陆,浏览某个连接下载等)。由于要涉及到读写客户端的磁盘文件,所以在客户端运行程序的时候必定会抛出securityException。当时在这里折腾了很久,老是把注意力里集中在修改客户端的安全策略文件上。
事实上,有一种更好的办法,那就是对applet程序所依赖的jar包进行数字签名。
步骤如下:
打开命令行窗口,定位到c:/目录下。
1、keytool -genkey -keystore pepper.store -alias pepper
这个命令用来产生一个密匙库,执行完毕后应该在c:/中产生一个pepper.store的文件,这里的pepper是我自己的名字,你可以对它进行修改。另外在执行命令的时候还有提示你输入密匙库的密码,这里你一定要记住,否则后面要用的时候无法输入。
2、
keytool -export -keystore pepper.store -alias pepper -file pepper.cert
这个命令用来产生签名时所要用的证书,同样这里的pepper也可以换成你自己需要的名字。这个命令执行完后在c:/中产生一个pepper.cert的文件。
3、
jarsigner -keystore pepper.store myapplet.jar pepper
这个命令用上面产生的证书将我们的jar文件进行了签名。(myapplet.jar是我们项目中所依赖的jar包)
执行完以上三步之后,就已经完全可以了。而不需要像网上某些文章说的那样还要修改客户端的安全策略文件。
最后在页面上把applet标记加上
<applet code="Tasdf.class" CODEBASE = "." archive="myapplet.jar" width=30 height=15>
</applet>