Java和JavaScript如何协同工作?
首先,我要声明我知道Java不是JavaScript,反之亦然 我有一个项目,需要计算1750个文档名和文档内容中每个词的出现次数。我从一位同事那里得到了一些很棒的JavaScript,它可以从网页上的表单输入中实现我想要的功能 我想使用Java的FileReader、BufferedReader、walkFileTree等遍历文档所在的目录 我不确定这是否是最有效的方法,但代码的Java和JavaScript部分现在都是独立工作的,我想在我开始重新发明轮子之前,看看是否能让它们在它们之间传递数据 到目前为止,我就在这里。我被CLParse方法卡住了&插入了伪代码:Java和JavaScript如何协同工作?,javascript,java,integration,Javascript,Java,Integration,首先,我要声明我知道Java不是JavaScript,反之亦然 我有一个项目,需要计算1750个文档名和文档内容中每个词的出现次数。我从一位同事那里得到了一些很棒的JavaScript,它可以从网页上的表单输入中实现我想要的功能 我想使用Java的FileReader、BufferedReader、walkFileTree等遍历文档所在的目录 我不确定这是否是最有效的方法,但代码的Java和JavaScript部分现在都是独立工作的,我想在我开始重新发明轮子之前,看看是否能让它们在它们之间传递数
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。所有这些都将在本地计算机上运行。因为我在用户区,所以我没有权限按照您的建议“正确”操作:\