在Web模式下,有什么办法能够在不修改客户端jre(如java.security、java.policy)的情况下,让Applet能够访问客户端本地资源(如读写文件等)。现在找到的方法都是将applet打包后进行签名,还要再修改客户端jre的策略文件,这种方法太不实用了。如果这样BS系统就和CS系统一样了。不知道大家有没有好的办法。拜谢~~~

解决方案 »

  1.   

    修改客户端jre策略文件的挫办法也不知道是谁带起来的!
    Applet要使用沙箱限制以外的功能(包括访问本地资源),必须经过签名
    签名是信任传递的,简单的说就A信任B,B信任C,那么A就信任C!
    你可以自签名颁发一份证书对你的Applet进行签名,客户端浏览器打开的时候会弹出信任确认框;
    只要用户点击确认就可以了!
    不过顺便提醒你一下,JDK1.4.2.05以后的版本,即使经过签名,在使用javascript进行调用的时
    候还是不行,要经过特殊加工!
      

  2.   

    我后来实现的方法和你说的差不多,不过我们所采用的方法就是通过applet修改客户端的安全文件,给予访问程序的权限。不过,在浏览器中,一个applet文件创建一个策略文件后,不能马上访问客户端的本地资源,必须重新开启浏览器,才可以访问,否则就报Access之类的错误。不知道为什么。请问知道不?请回复,知否这个分都给你了。
      

  3.   

    参照这个就可以了,已经验证过,没问题。http://blog.csdn.net/fhx007/archive/2008/11/27/3389585.aspx
      

  4.   

    事实上,经过签名后的APPLET已经具有访问本地资源的权限了!
    我敢肯定,你是在APPLET里提供了一个方法,这个方法直接或间接地使用了沙箱以外的功能,如果这个方法在你APPLET的init方法调用,能够正常执行,就像你说的已经能够修改本地策略文件了!
    但是,当你用js调用这个方法的时候,却仍然碰到报告没有权限执行!
    如果你的问题是这样,我有正解,绝对不需要修改策略文件,不过分太少,少的可怜!