2

我将首先声明我知道 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 之间来回传递值的实际经验,以及关于如何更好/更好的方法的建议。

4

4 回答 4

1

我会尝试调查 Mozilla Rhino。
http://en.wikipedia.org/wiki/Rhino_%28JavaScript_engine%29

于 2012-12-12T12:59:02.350 回答
1

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

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

于 2012-12-12T13:02:36.553 回答
1

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

1.Applet <-> javascript

2.Serlvet <-> javascript

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

或者您不能使用它立即调用 Applets 方法,document.appletname.methodname(); 您甚至可以简单地将相同的格式解析为彼此。

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

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

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

JavaServlet 类

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

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

1.小程序在用户电脑上运行,所以你可以访问他的文件。但为此,您的小程序必须签名。

2.Servlet在Server上运行。在这里,您拥有完整的文件访问权限(如果系统允许您也拥有它)。

于 2012-12-12T13:04:29.713 回答
0

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

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

于 2012-12-12T12:50:18.017 回答