Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java和JavaScript如何协同工作?_Javascript_Java_Integration - Fatal编程技术网

Java和JavaScript如何协同工作?

Java和JavaScript如何协同工作?,javascript,java,integration,Javascript,Java,Integration,首先,我要声明我知道Java不是JavaScript,反之亦然 我有一个项目,需要计算1750个文档名和文档内容中每个词的出现次数。我从一位同事那里得到了一些很棒的JavaScript,它可以从网页上的表单输入中实现我想要的功能 我想使用Java的FileReader、BufferedReader、walkFileTree等遍历文档所在的目录 我不确定这是否是最有效的方法,但代码的Java和JavaScript部分现在都是独立工作的,我想在我开始重新发明轮子之前,看看是否能让它们在它们之间传递数

首先,我要声明我知道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
      }
publicstaticvoidmain(String…aArgs)抛出FileNotFoundException{
文件开始目录=新文件(“CGT”);
List files=FileListing.getFileListingNoSort(startingDirectory);
用于(文件:文件){
CLParse(file.toString());
}   }
静态私有列表getFileListingNoSort(文件A目录)引发FileNotFoundException{
列表结果=新建ArrayList();
File[]filesAndDirs=aDirectory.listFiles();
List filesDirs=Arrays.asList(filesAndDirs);
for(文件:filesDirs){
result.add(file);//始终添加,即使是目录
如果(!file.isFile()){
List deeperList=getFileListingNoSort(文件);
结果:addAll(deeperList);
}      }      
返回结果;
}
/*这样做可行吗?我该怎么做?
*/
公共静态void CLParse(字符串fn){
将fn传递给JavaScript计数器
返回字符串的{word,occurrences}数组
将数组写入文件
}

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

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


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

我将尝试调查Mozilla Rhino。
看看犀牛


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

您有两个选项可以让它们彼此交互,我知道:

1.小程序javascript

2.Serlvet javascript

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

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

使用选项2,您必须构建与Servlet的通信

在这里,您必须向Servlet发送Ajax请求:

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

第一条注释必须在web.xml中作为Servlet编写,它是Servlet模式。 第二个是可以在servlet中读取的参数。函数描述可以在请求中完成的内容

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

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


2.Servlet在服务器上运行。在这里,您可以完全访问文件(如果系统允许的话)。

您可以使用Java脚本框架从Java调用JavaScript,但在这种情况下,将同事的代码翻译成Java可能是最简单的方法。它不是很长,是吗?Java有一个“脚本引擎”,用于评估来自Java的JavaScript。看见这就是您需要的吗?如果您的JavaScript代码基于文档的DOM结构,并且您真的非常想重用它,那么您可以编写一个浏览器插件(例如Chrome),让Java代码在正确的页面上启动浏览器实例,并让插件通过AJAX将数据发送回Java代码。我会重写JavaScript代码…现有的代码大约有250行。我从未真正将JavaScript反向工程到其他东西中;我担心把翻译中的东西弄乱了。我将研究Java脚本框架,看看哪一个看起来更吓人。:)您需要Java代码中的结果吗?因为更好的选择可能是直接在命令行上运行JavaScript。所有这些都将在本地计算机上运行。因为我在用户区,所以我没有权限按照您的建议“正确”操作:\