Java直接运行JavaScript代码或js文件

执行JavaScript用到的类有:

 javax.script.ScriptEngine;
 javax.script.ScriptEngineFactory;
 javax.script.ScriptEngineManager;
 javax.script.ScriptException;

需求1:执行一个JavaScript字符串,将结果打印在控制台上。

ScriptEngineManager m = new ScriptEngineManager();
//获取JavaScript执行引擎
ScriptEngine engine = m.getEngineByName("JavaScript");
//执行JavaScript代码
engine.eval("function getAdd(a,b){return a+b;} print('我爱你中国!' + getAdd(1,2));");

在这里插入图片描述

需求2:执行一个js脚本文件,并将结果读入到变量中。
步骤一:确定js文件及路径
先定义一个js文件,名为:abc.js,放在resource或者src目录下面。

function getAdd(a, b) {
    return a * b;
}
print("1*2 = " + getAdd(1, 2) + "\n");

步骤二:直接上Java测试代码:

//使用管道流,将输出流转为输入流
PipedReader prd = new PipedReader();
PipedWriter pwt = new PipedWriter(prd);
//设置执行结果内容的输出流
engine.getContext().setWriter(pwt);
//js文件的路径
String strFile = Thread.currentThread().getClass().getResource("/").getPath() + "/abc.js";
Reader reader = new FileReader(new File(strFile));
engine.eval(reader);
BufferedReader br = new BufferedReader(prd);
//开始读执行结果数据
String str = null;
while ((str = br.readLine()) != null && str.length() > 0) {
     System.out.println(str);
}
br.close();
pwt.close();
prd.close();

在这里插入图片描述
脚本引擎指的是脚本的运行环境,能够把运行其上的解释性语言如JavaScript转换为更底层的汇编语言,从而让脚本获得被执行的机会。

Java1.6引入了对Java Specification Request(JSR)223的支持,JSR223旨在定义一个统一的规范,使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的。这些接口被定义在javax.script包中,主要是一些接口和抽象类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值