栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中使用JavaScript脚本的方法步骤

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中使用JavaScript脚本的方法步骤

简介 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 ConcurrentHashMap scripts = 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脚本内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

作者: SimpleWu

出处:https://www.cnblogs.com/SimpleWu/p/12598442.html

本站使用「SimpleWu BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/133790.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号