Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javascript调用Applet方法_Java_Javascript_Security_Applet - Fatal编程技术网

从Javascript调用Applet方法

从Javascript调用Applet方法,java,javascript,security,applet,Java,Javascript,Security,Applet,我有一个小程序可以上传特定文件夹中的一些文件并删除它们,但当我从javascript代码调用小程序函数时,出现了一些问题,当我从init调用该函数时,它工作正常 我的小程序代码: public class Uploader extends Applet { String serverPath; String clientPath; private JSObject win; @Override public void init() { serverPa

我有一个小程序可以上传特定文件夹中的一些文件并删除它们,但当我从javascript代码调用小程序函数时,出现了一些问题,当我从init调用该函数时,它工作正常

我的小程序代码:

public class Uploader extends Applet {
   String serverPath;
   String clientPath;
   private JSObject win;
   @Override
   public void init() {
       serverPath = getParameter("serverPath");
       clientPath = getParameter("clientPath");
       try {
           win = JSObject.getWindow(this);
       } catch (JSException e) {
           log.warning("Can't access JSObject object");
       }
       upload(topic,clientPath);
   }
   public void upload(String topic,String clientPath) {
       log.log(Level.SEVERE, "upload functiond");
       DefaultHttpClient client = new DefaultHttpClient();
       MultipartEntity form = new MultipartEntity();
       log.log(Level.SEVERE, "upload functiond2");
       try {
            File directory = new File(clientPath);
            log.log(Level.SEVERE, "upload functiond2.2");
            File[] files = directory.listFiles();
            log.log(Level.SEVERE, "upload functiond2.5");
            int i = 0;
            for (File file : files) {
                log.log(Level.SEVERE, "upload functiond2.6");
                i++;
                form.addPart("file" + String.valueOf(i), new FileBody(file));
                System.out.println("adding file " + String.valueOf(i) + " " + file);
                log.log(Level.SEVERE, "adding file " + String.valueOf(i) + " " + file);
            }
            log.log(Level.SEVERE, "upload functiond3");
            form.addPart("topic", new StringBody(topic, Charset.forName("UTF-8")));
            form.addPart("action", new StringBody(action, Charset.forName("UTF-8")));
            form.addPart("path", new StringBody(serverPath, Charset.forName("UTF-8")));
            HttpPost post = new HttpPost(serverPath);
      ....
这是我的javascript代码:

document.applet.upload(title,"c:\scan");
当我从javascript调用时,只打印日志:

log.log(Level.SEVERE, "upload functiond2.2");
请注意,当我从applet的init方法调用时,它工作正常

我将我的代码包装成一个PriviligedAction,但只向前走了一步并坚持下去

log.log(Level.SEVERE, "upload functiond2.5");

Java和JS的交互使安全性变得复杂。JRE不能信任JS,因此它决定了包括代码在内的整个“操作链”是不可信的。有一种方法可以解决它


代码需要包装在一个文件中,并使用doPrivileged。。。查看AccessController文档的顶部。以上方法可以查看示例用法。

当我添加PrivilagedAction时,它会转到log.logLevel.SEVERE,upload function2.5;你能再帮我一次吗?我建议你发个帖子。我特别感兴趣的是……所暗示的捕获过程中会发生什么。。。。确保它包括一个e.printStackTrace;或者类似的方法,并在Java控制台中获取输出,以便在此处复制/粘贴。顺便说一句,这些日志消息中的大多数都应该是级别。INFOyes,这是一个空指针异常,我无法看到,在我的小程序类之前添加注释@SuppressWarningsserial后,异常出现在控制台。谢谢。忽略异常输出会有危险;很高兴你把它整理好了@安德烈·汤普森我的问题被你标记为重复,我来这里是为了感谢你;我也为我工作。