当前位置: 首页 > 面试题库 >

从Javascript调用Applet方法

张永嘉
2023-03-14
问题内容

我有一个applet,可以从特定的文件夹上载一些文件并删除它们,但是当我从javascript代码中调用applet函数时,出现了问题,当我从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");

请注意,当我从initapplet方法调用时,它可以正常工作。

我将代码包装到中PriviligedAction,但仅前进了一步,然后继续

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

问题答案:

Java和JS的交互使安全性复杂化。JRE无法信任JS,因此它决定包括您的代码在内的整个“操作链”都是不受信任的。有一种解决方法。

需要将代码包装在中,PrivilegedAction然后使用that
AccessController方法之一进行调用doPrivileged(..)。查看AccessController文档顶部。(方法上方)以查看示例用法。



 类似资料:
  • 问题内容: 我已经创建了一个applet,并且将要从Web项目上的HTML页面访问applet方法。 这里我的小程序看起来像: 我的HTML页面如下所示: 但是,当我单击单选按钮时,浏览器将挂起,并且无法访问applet方法。 我的applet类位于默认目录中,而HTML位于WebContent文件夹中。我应该更改我的代码吗? 问题答案: 问题是语句检查: 这与JavaScript不完全一样,因为

  • 问题内容: 我有一个带有Java Applet的网站,该Applet需要连接到我的服务器。这在JApplets @Override init()中有效,但不适用于javascript调用的我自己的函数中。 网站: 输出: 我尝试通过System.out调用解决它,但是那里也没有任何反应。但是,这绝对可以: 哦,小程序当然也来自 我该如何解决或解决它? 问题答案: 尝试以下方法:

  • 问题内容: 我想从Servlet调用javascript方法…可能吗? 我听说过一种叫做mozila rhino的东西,但不了解它的用途,请问有1种想法吗??? 问题答案: 我想从Servlet调用javascript方法…可能吗? 是的,请看Rhino教程。它有一些很好的示例,说明了如何在Java应用程序中嵌入JavaScript的执行。 您可能还想看看Wikipedia上Rhino文章上的示例

  • 问题内容: 我有两个组成部分。 父组件 子组件 我试图从父级调用孩子的方法,我尝试过这种方法,但没有得到结果 有没有一种方法可以从父级调用子级的方法? 注意:子组件和父组件位于两个不同的文件中 问题答案: 首先,让我表示,这通常不是在React领域中解决问题的方法。通常,您要做的是在props中将功能传递给子级,并在事件中传递子级的通知(或者更好的是:)。 但是,如果必须在子组件上公开命令式方法,

  • 问题内容: 我现在正在使用人行横道。当用户单击HTML中的按钮时,我需要调用Java方法,如下所示: 我不确定Crosswalk扩展是否是我想要的,这似乎只是为了调用Java函数而权重很大。 有没有更简单的方法可以做到这一点?还是在这种情况下应该将Cordova与Crosswalk一起使用? 问题答案: 如果仅将XWalkView用作嵌入式视图,则足以将Java对象注入XWalkView(Java

  • 问题内容: 我有一系列XML文件,这些文件引用XSLT文件以在浏览器中呈现为HTML。其中一些链接会在常规页面上执行AJAX调用以请求HTML,并将其插入页面上已有的DIV中。 我想做的是从该页面调用链接的Web服务,然后接收XML,然后以与原始页面相同的方式将其处理为HTML,然后通过AJAX插入当前页面的DIV中。 我的问题是:我将如何获取Javascript下载的XML并使用Javascri