Java和JavaScript如何协同工作?

时间:2012-12-12 12:45:49

标签: javascript java integration

我将在前面说明我知道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
      }

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

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

你有两个让他们互​​相交流的选项,我知道:

1.Applet&lt; - &gt; javascript

2.Serlvet&lt; - &gt;的JavaScript

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

或者您可以使用document.appletname.methodname();实时调用Applet方法 通过这种方式,你甚至可以将相同的Formats解析为彼此。

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

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

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

JavaServlet class

第一个注释,必须在web.xml中写为Servlet,它是servlet模式。 第二个是可以在servlet中读取的参数。该函数描述了这些东西,可以在请求中完成。

这两个选项之间的区别是:

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

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

答案 3 :(得分:0)

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

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