java rhino 下载_8.4(Java学习笔记)java脚本引擎(Rhino)
一、java脚本引擎
java脚本引擎是沟通java和脚本语句之间的桥梁,可以通过对应的脚本引擎在java中调用各种脚本语言。
二、脚本引擎执行脚本代码
ScriptEngineManager:为ScriptEngine提供实例化机制。
方法:getEngineByName(String shortName);//查找并创建指定名称的脚本引擎
ScriptEngine:是一个接口,该接口提供了基本的脚本功能(包括执行脚本,设置和获取值的方法)。
方法:get(String key);//获取指定key所对应的值,这里的key看做变量名称,值看做变量名所对应的值。
eval(String script);//执行指定的脚本代码
eval(Reader reader);//执行指定的脚本文件
java执行JavaScript脚本步骤:
1.获取脚本引擎
2.指定脚本名称
3.编写脚本语句
4.执行脚本
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;public classTestRhino {public static voidmain(String[] args) throws ScriptException {//获取脚本引擎,并指定脚本语言
ScriptEngineManager sem = newScriptEngineManager();
ScriptEngine engine= sem.getEngineByName("javascript");//定义上下文变量,被脚本和java共享
engine.put("msg", "javascript");//定义脚本代码
String str = "var user = {name:'hcf',age:19,sex:'man'};";
str+="print(user.name);";//执行脚本
engine.eval(str);
System.out.println("修改前的内容:"+engine.get("msg"));
engine.eval("msg ='java';");//修改msg内容
System.out.println("修改后的内容:"+engine.get("msg"));
}
}
运行结果:
hcf
修改前的内容javascript
修改后的内容java
三、脚本引擎执行脚本方法
1.执行脚本方法,首先肯定是要在脚本中定义方法,然后执行。
2.执行时需要将engine转换为Invcable,然后调用其中的invokeFun
Invocable:由ScriptEngines实现的可选接口,其方法允许调用先前已执行的脚本中的程序(方法)。
3.调用Object invokeFunction(String name, Object... args);执行指定方法。
name为方法名称,args为方法参数,返回是一个Object对象
importjavax.script.Invocable;importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;importjavax.script.ScriptException;public classTestRhino {public static void main(String[] args) throwsScriptException {
ScriptEngineManager sem= newScriptEngineManager();
ScriptEngine engine= sem.getEngineByName("javascript");//定义方法的字符串形式
String funAdd = "function add(a,b){"
+ " var sum = a + b;"
+ " return sum;"
+ " }";
engine.eval(funAdd);//这一步可以看做将方法写入脚本
Invocable invo = (Invocable)engine;//转换成Invocable
Object result = null;try{//执行脚本中方法
result = invo.invokeFunction("add",new Object[]{17,23});
}catch(NoSuchMethodException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(result);
}
}
运行结果:
40.0
四、脚本引擎执行脚本文件
1、执行脚本文件,首先我们要指定文件的路径。
2、通过这个路径构建一个Reader对象
3、调用eval(Reader reader);//执行指定的脚本文件
脚本文件内容
importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.Reader;importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;importjavax.script.ScriptException;public classTestRhino {public static void main(String[] args) throwsScriptException {//E:\eclipse\Rhino
ScriptEngineManager sem = newScriptEngineManager();
ScriptEngine engine= sem.getEngineByName("javascript");//脚本文件路径
String path = "E:\\eclipse\\Rhino\\test.js";
Reader read= null;try{//通过脚本文件路径构造Reader对象
read = new FileReader(newFile(path));
}catch(FileNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}//执行脚本文件
engine.eval(read);
}
}
运行结果:
a+b = 7
java rhino 下载_8.4(Java学习笔记)java脚本引擎(Rhino)相关推荐
- JAVA不同类型数组重载_java学习笔记--java中的方法与数组
方法 完成特定功能的代码块 方法的格式 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){ //方法体 return 返回值: } 方法的调用方式 通过方法名调用方法 根据形 ...
- JDBC学习笔记——Java语言与数据库的鹊桥
JDBC学习笔记--Java语言与数据库的鹊桥 JDBC(Java DataBase Connectivity):SUN公司提供的 一套操作数据库的标准规范,说白了就是用Java语言来操作数据 ...
- Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25
Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...
- 学习笔记-Java并发(一)
学习笔记-Java并发(一) 目录 学习笔记-Java并发一 目录 Executer Callable和Future 后台线程 线程加入 小计 今天看了这一篇 Java编程思想-java中的并发(一) ...
- Java转义工具类StringEscapeUtils的学习笔记
Java转义工具类StringEscapeUtils的学习笔记 前言 在java.commons.lang3 的包中有许多方便好用的工具类,类似于处理字符串的StringUtils,处理日期的Da ...
- 深入理解Java虚拟机(第3版)学习笔记——JAVA内存区域(超详细)
深入理解Java虚拟机(第3版)学习笔记--JAVA内存区域(超详细) 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存 对象的创建 对象的内存布局 ...
- Spark下载和安装(学习笔记)
夫君子之行,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远. 夫学须静也,才须学也,非学无以广才,非志无以成学.淫慢则不能励精,险躁则不能冶性. 年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐, ...
- 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)
游戏开发学习笔记--lua脚本语言--安装.汉化与小测试 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: Lua 是一种轻量小巧的脚本语言,用 ...
- PS学习笔记------运用脚本及自动化批量处理
PS学习笔记------运用脚本及自动化批量处理 简单脚本运行+自动批处理多图片 简单脚本运行 自动批处理图片 简单脚本运行+自动批处理多图片 本次实现的功能是: 1.运用脚本在ps中将图片的文档名称 ...
- 阿里云学习笔记——设置规则引擎(2)
标题阿里云学习笔记--设置规则引擎(2) 下面是我自己作为学习笔记分享,大神勿喷,如有叙述错误的地方欢迎指正. 1.定义Topic 定义了p_data和s_data 2.创建规则引擎,这里创建了APP ...
最新文章
- JZOJ 2308. 【中山市选2011】聚会
- 为什么读博士的人越来越多?博士毕业难度不是越来越大吗?
- boost::fusion::hash_value用法的测试程序
- 新疆缺少计算机网络技术吗,新疆阿克苏职业技术学院的计算机网络技术专业好不?...
- 【CodeForces - 1038B 】Non-Coprime Partition (构造,数组特征)
- 产品经理必备的两种心态
- Objective-C 一些很基础的总结
- python编写简易超市系统_简易控制台超市销售系统|Python练习系列[1]
- ios swift 实现饼状图进度条,swift环形进度条
- Photoshop 入门教程「4」如何使用撤消命令?
- mysql数据库文件结构同步,[数据库的表同步mysql]MySQL表结构同步
- MATLAB 2020b 中文版安装教程(简洁版)
- 最详细最好的Multisim模拟电路仿真教程(附视频教程)
- hihocoder 1378(有向图求最小割集)
- php删除文件还能修复吗,删除文件恢复
- driver: linux下如何模拟按键输入和模拟鼠标
- CSS第六天-高级技巧(元素隐藏、精灵图、CSS用户界面样式、margi负值作用、CSS三角形)
- 鸿蒙系统能用wps吗,WPS Office
- DOSBOX运行程序
- Java版SLG游戏 竜退治2