【问题标题】:How can Java and JavaScript work together?Java 和 JavaScript 如何协同工作?
【发布时间】:2012-11-30 04:17:30
【问题描述】:

我先声明我知道 Java 不是 JavaScript,反之亦然。

我有一个项目,我需要计算 1750 个文档名称和文档内容中每个单词的出现次数。我从一位同事那里得到了一些很棒的 JavaScript,它完全可以从网页上的表单输入中完成我想要的。

我想使用Java的FileReader、BufferedReader、walkFileTree等来遍历文档所在的目录。

我不确定这是否是最有效或最有效的方法,但代码的 Java 和 JavaScript 部分现在都彼此独立工作,我想看看我是否能让它们通过在我开始重新发明轮子之前,他们之间的数据。

这是我到目前为止的位置。我被困在 CLParse 方法中并插入了伪代码:

public static void main(String... aArgs) throws FileNotFoundException    {
    File startingDirectory= new File("CGT");
    List<File> files = FileListing.getFileListingNoSort(startingDirectory);
    for(File file : files )           {
        CLParse(file.toString());
    }   }

static private List<File> getFileListingNoSort(File aDirectory) throws FileNotFoundException    {
    List<File> result = new ArrayList<File>();
    File[] filesAndDirs = aDirectory.listFiles();
    List<File> filesDirs = Arrays.asList(filesAndDirs);
    for(File file : filesDirs)          {
        result.add(file); //always add, even if directory
        if ( ! file.isFile() )   {
            List<File> deeperList = getFileListingNoSort(file);
            result.addAll(deeperList);
        }      }      
    return result;
    }

 /* is something like this doable and how would I do it?
 */
public static void CLParse(String fn) {
      pass fn to JavaScript counter
      return an array of {word,occurences} for the string
      write array to file
      }

我将创建另一组方法来提取文档内容并将其作为字符串传递。我很想知道是否有人有任何在 Java 和 JavaScript 之间来回传递值的实际经验,以及关于如何更好/更好的方法的建议。

【问题讨论】:

  • 您可以使用 Java 脚本框架从 Java 调用 JavaScript,但在这种情况下,将您同事的代码转换为 Java 可能是最简单的。不会很长吧?
  • Java 有一个“脚本引擎”,用于评估例如来自 Java 的 JavaScript。见docs.oracle.com/javase/6/docs/technotes/guides/scripting/…。这是你需要的吗?
  • 如果你的 JavaScript 代码是基于文档的 DOM 结构的,并且你真的非常想重用它,那么你可以编写一个浏览器插件(例如 Chrome),让 Java 代码启动浏览器实例在正确的页面上,并让插件通过 AJAX 将数据发送回 Java 代码。我会重写 JavaScript 代码...
  • 现有代码约250行。我从来没有真正将 JavaScript 逆向工程成别的东西。我很担心在翻译中搞砸了一些东西。我将研究 Java Scripting 框架,看看哪个看起来更吓人。 :)
  • 您需要 Java 代码中的结果吗?因为更好的选择可能是直接在命令行上运行 JavaScript。

标签: javascript java integration


【解决方案1】:

你有 2 个选项可以让它们相互交互,我知道:

1.Applet javascript

2.Serlvet javascript

使用选项 1,您必须与 JSObject 建立通信:JSObject

或者您不能使用 document.appletname.methodname(); 立即调用 Applets 方法 有了这个,你甚至可以简单地解析相同的格式。

使用选项 2,您必须与 Servlet 建立通信。

在这里你必须向 Servlet 发送一个 Ajax 请求:

$.post('login',{name:"Peter", pw:"123456"},function() 
{ 
   //do whatever
})

JavaServlet class

第一条评论,必须写成你的 web.xml 中的 Servlet,它是 servlet 模式。 第二个是可以在 servlet 中读取的参数。该函数描述的东西,可以在请求中完成。

这两个选项的区别是:

1.Applets 在用户计算机上运行,​​因此您可以访问他的文件。但为此,您的小程序必须签名。

2.Servlet 在服务器上运行。在这里你有完整的文件访问权限(如果系统允许你也有的话)。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      查看犀牛https://developer.mozilla.org/en-US/docs/Rhino

      您可以创建 java 对象并在 javascript 中使用它们。集成很简单

      【讨论】:

        【解决方案4】:

        您可以使用 AJAX 向服务器发送和接收值。您可以将参数或 JSON 发送到服务器并获得响应。

        您可以使用JSONP 来提供数据,或者如果您无法控制第二台服务器,则使用反向代理将请求通过第一台服务器代理到第二台服务器。

        【讨论】:

        • 所有这些都将在本地机器上运行。因为我在用户区,所以我没有权限“正确”地做,正如你所建议的那样。 :\
        猜你喜欢
        • 1970-01-01
        • 2014-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-09
        • 2018-04-05
        • 2021-12-09
        • 2019-04-21
        相关资源
        最近更新 更多