Java调用js

Java调用js其实是java SE自带的,并不需要任何第三方的东西。

首先来看看java自带的命令行工具jjs

 

这是个java的脚本工具,使用起来和node.js很相似,提供的功能跟node.js有所不同。Jjs是一个javascript工具,可以调用java的一些类,方法和属性。

jjs里面可以写各种javascript代码。但是浏览器自带的javascript对象是没有的,比如windowdocument对象。

所以这提供了一个js调用java的解决方案,但这不是我们这篇博文的重点。重点在于,如何用java调用js

Java提供了一个类ScriptEngineManager这个类的作用就是管理脚本引擎,常见的脚本引擎有Nashornjavascript。通过引擎管理器的getEngineByName方法可以获取到脚本引擎,脚本引擎就可以执行各种脚本了。

引擎的实例可以转换为Invocable对象,这个对象可以调用引擎中已经定义的js函数。如下面的代码:

public static void main(String[] args) throws ScriptException, NoSuchMethodException {

  ScriptEngineManager sem = new ScriptEngineManager();

	  ScriptEngine engine = sem.getEngineByName("javascript");

	  engine.eval("function add(a,b){return a+b;}");

	  Invocable invocable = (Invocable)engine;

	  System.out.println(invocable.invokeFunction("add", 1,2));

}

脚本 引擎是JDK7新加的功能,JDK6或者以下版本是用不了这个功能的。

在代码中可以看到引擎的eval方法可以执行js代码,还支持js文件的执行,用起来非常方便。

在实际的项目开发中它有什么作用呢?

实际项目开发中它可能有以下作用:

1用来生成HTML网页,现在有很多流行的js模板框架,可以利用这种动态执行这些js模板引擎来生成html网页返回给客户端。比如在web开发中,可以用该技术结合xtemplate.js来生成html,返回给浏览器。

用来执行动态代码,比如在OA项目或者财务软件中,工资的计算时一个动态的公式。我可以用这个技术来讲公司的计算方式做成脚本,管理人员可以在网页上修改这个脚本,修改工资的计算方法。

你可能感兴趣的:(Java调用js)