java js脚本引擎_JAVA使用脚本引擎执行JS

importjava.io.File;importjava.lang.reflect.Field;importjava.util.Arrays;importjavax.script.Invocable;importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;importjavax.script.ScriptException;public classJavaExecScriptDemo {public static voidmain(String[] args) {

System.out.println(jsObjFunc());

System.out.println(Arrays.toString(getArray()));

System.out.println(jsCalculate("a=1+2+3+(2*2)"));

jsFunction();

jsVariables();

}/*** 运行JS对象中的函数

*

*@return

*/

public staticObject jsObjFunc() {

String script=

"var obj={run:function(){return 'run method : return:\"abc'+this.next('test')+'\"';},next:function(str){return ' 我来至next function '+str+')'}}";

ScriptEngineManager sem= newScriptEngineManager();

ScriptEngine scriptEngine= sem.getEngineByName("js");try{

scriptEngine.eval(script);

Object object= scriptEngine.get("obj");

Invocable inv2=(Invocable) scriptEngine;return (String) inv2.invokeMethod(object, "run");

}catch(Exception e) {

e.printStackTrace();

}return null;

}/*** 获取js对象数字类型属性

*

*@return

*/

public staticObject[] getArray() {

ScriptEngineManager sem= newScriptEngineManager();

String script= "var obj={array:['test',true,1,1.0,2.11111]}";

ScriptEngine scriptEngine= sem.getEngineByName("js");try{

scriptEngine.eval(script);

Object object2= scriptEngine.eval("obj.array");

Class clazz =object2.getClass();

Field denseField= clazz.getDeclaredField("dense");

denseField.setAccessible(true);return(Object[]) denseField.get(object2);

}catch(Exception e) {

e.printStackTrace();

}return null;

}/*** JS计算

*

*@paramscript

*@return

*/

public staticObject jsCalculate(String script) {

ScriptEngineManager manager= newScriptEngineManager();

ScriptEngine engine= manager.getEngineByName("javascript");try{return(Object) engine.eval(script);

}catch(ScriptException ex) {

ex.printStackTrace();

}return null;

}/*** 运行JS基本函数*/

public static voidjsFunction() {

ScriptEngineManager sem= newScriptEngineManager();

ScriptEngine se= sem.getEngineByName("javascript");try{

String script= "function say(name){ return 'hello,'+name; }";

se.eval(script);

Invocable inv2=(Invocable) se;

String res= (String) inv2.invokeFunction("say", "test");

System.out.println(res);

}catch(Exception e) {

e.printStackTrace();

}

}/*** JS中变量使用*/

public static voidjsVariables() {

ScriptEngineManager sem= newScriptEngineManager();

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

File file= new File("/data/js.txt");

engine.put("file", file);try{

engine.eval("println('path:'+file.getAbsoluteFile())");

}catch(ScriptException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值