我将在前面声明我知道 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 之间来回传递值的实际经验,以及关于好的/更好的方法的建议。
最佳答案
你有 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
})
第一条注释必须在 web.xml 中作为 Servlet 编写,它是 servlet 模式。 第二个是servlet 中可以读取的参数。该函数描述了可以在请求中完成的内容。
这两个选项之间的区别是:
1.Applet 在用户计算机上运行,因此您可以访问他的文件。但为此,您的小程序必须经过签名。
2.Servlet运行在服务器上。在这里,您拥有完整的文件访问权限(如果系统允许您也拥有它)。
关于javascript - Java 和 JavaScript 如何协同工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840126/