Java中如何使用JavaScript脚本
这篇文章主要为大家展示了Java中如何使用JavaScript脚本,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。
成都创新互联专注于企业成都营销网站建设、网站重做改版、濉溪网站定制设计、自适应品牌网站建设、HTML5建站、商城网站定制开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为濉溪等各大城市提供网站开发制作服务。
简介 Nashorn
Nashorn 一个 javascript 引擎。
从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1规范以及一些扩展。
它使用基于JSR 292的新语言特性,其中包含在JDK 7中引入的 invokedynamic,将JavaScript编译成Java字节码。
与先前的Rhino实现相比,这带来了2到10倍的性能提升。
使用方式
1. 编写JavaScript脚本
列:JavaScript方法使用Java对象执行方法获取返回值。
function scriptFunction(obj){ var a = 1; var b = 2; return obj.sum(a,b); } scriptFunction(obj);//调用该方法
该脚本变量定义为 String script1;
2. 创建JavaScript容器用户存储脚本 ScirptContainer.java
public class ScirptContainer { public static ScriptEngine engine;//脚本引擎 static { ScriptEngineManager manager = new ScriptEngineManager();//脚本引擎管理 engine = manager.getEngineByName("nashorn");//获取nashorn脚本引擎 engine.getContext().getWriter();//获取正文并且写入 } private ConcurrentHashMapscripts = new ConcurrentHashMap<>();//脚本存储容器 public CompiledScript getCompiledScript(String script) throws ScriptException{ //判断脚本是否为空 if(script == null || "".equals(script)){ throw new ScriptException("JavaScript empty"); } //获取脚本Hash int hashCode = script.hashCode(); //从容器中获取脚本 CompiledScript compiledScript = scripts.get(hashCode); if(compiledScript == null){ //容器中无脚本创建脚本对象 Compilable compilable = (Compilable) engine; //编译JavaScript脚本 compiledScript = compilable.compile(script); //脚本对象存入容器中 scripts.put(hashCode, compiledScript); } return compiledScript; } }
3. Java执行JavaScript脚本
public class ScriptHandler { //创建容器对象 private ScirptContainer scirptContainer = new ScirptContainer(); //需要执行的对象 String js1 = "function scriptFunction(obj){ var a = 1; var b = 2; return obj.sum(a,b); } scriptFunction(obj);"; @Test public void test() throws ScriptException{ //获取脚本对象 CompiledScript c1 = scirptContainer.getCompiledScript(js1); //创建参数绑定 Bindings bindings = scirptContainer.engine.createBindings(); //obj参数绑定SumTest类 bindings.put("obj", new SumTest()); //执行JavaScript脚本并且打印返回值 System.out.println(c1.eval(bindings)); } }
注意事项:
- 脚本中scriptFunction(obj);是必须存在,否则不会执行方法.
- 脚本中可以创建Java对象,需要全类名如var map = new java.util.HashMap()
以上就是关于Java中如何使用JavaScript脚本的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。
分享标题:Java中如何使用JavaScript脚本
标题链接:http://myzitong.com/article/jccphi.html