java 脚本引擎执行js
为用到时,使用方便直接保存一下代码
package com.xzlf.reflectTest; import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.List; import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager; /**
* java 中的脚本引擎
* @author xzlf
*
*/
public class Demo05 {
public static void main(String[] args) throws Exception {
// 获取脚本引擎对象
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
// 定义变量
engine.put("msg", "Hello World!");
String str = "var user = {name:'张三', age:18};";
str += "print(user.name);";
// 执行脚本
engine.eval(str);
engine.eval("msg='Hello Java'");
System.out.println(engine.get("msg")); // 定义函数
engine.eval("function add(a, b){ return a +b;}");
// 取得调用接口
Invocable jsInvocable = (Invocable) engine;
// 执行脚本中定义的方法
Object result = jsInvocable.invokeFunction("add", 11, 12);
System.out.println(result); // 导入java包,使用其他包中的java类
String jsCode = "var list = java.util.Arrays.asList([\"Java\", \"Html\", \"MySQL\"])";
engine.eval(jsCode);
List<String> list = (List<String>) engine.get("list");
for (String string : list) {
System.out.println(string);
} // 执行js 文件(js文件放在src下)
Reader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("src/test.js")));
engine.eval(reader);
reader.close();
}
}
java 脚本引擎执行js的更多相关文章
- [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码
一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...
- Java 脚本引擎
脚本引擎,就是一个编程语言的解释器,它的功能是解释执行用户的程序文本,将它译成计算机能执行的机器代码,完成一系列的功能. Java脚本引擎简单地说就是指Java提供的一组兼容操作各种脚本语言的的API ...
- 8.4(Java学习笔记)java脚本引擎(Rhino)
一.java脚本引擎 java脚本引擎是沟通java和脚本语句之间的桥梁,可以通过对应的脚本引擎在java中调用各种脚本语言. 二.脚本引擎执行脚本代码 ScriptEngineManager:为Sc ...
- Java中通过脚本引擎调用js函数
import java.io.*; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.scri ...
- 在java代码中执行js脚本,实现计算出字符串“(1+2)*(1+3)”的结果
今天在公司项目中,发现一个计算运费的妙招.由于运费规则各种各样,因此写一个公式存到数据库.下次需要计算运费时,直接取出这个公式,把公式的未知变量给替换掉,然后计算出结果就是ok了. 一 ...
- Java通过ScriptEngine 执行js脚本案例
public static void main(String[] args) throws ScriptException, FileNotFoundException, NoSuchMethodEx ...
- Java_脚本引擎_01_用法入门
一.前言 最近有个需求,需要在js中调用java,这样能避免更新java,从而实现代码的热更新. 于是想到用 Nashorn JavaScript 引擎. 二.概述 通过 JDK 8 的 Nashor ...
- 在Java中直接调用js代码(转载)
http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...
- 在Java中直接调用js代码
JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...
随机推荐
- .NET 5.0 Preview 2发布
2020年4月2日微软.NET 团队的项目经理 Richard 在博客上 发布了.NET 5 Preview 2:https://devblogs.microsoft.com/dotnet/annou ...
- Collections.sort详解
Collections.sort(list, new PriceComparator());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序. Com ...
- Java刷题知识点总结
1,方法的重写(override)两同两小一大原则: 方法名相同,参数类型相同 子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类方法访问权限. ...
- RocketMQ 源码分析之路由中心(NameServer)
你可能没有看过 RocketMQ 的架构图,没关系,一起来学习一下,RocketMQ 架构图如下: 在 RocketMQ 中,有四个角色: Producer:消息的生产者,每个 MQ 中间件都有. C ...
- 如何更换 App icon
每逢重大节日,App icon 就要跟一波"潮流"做一次更换,节日过后再换回普通.如何保证这两次切换流程丝滑顺畅呢? 应用内需要更换的 icon 包括两处,一个是 App 主 ic ...
- python:列表生成式的学习
看个例子: # 定义一个列表 l=[1,2,3,4,5] #()用于创建一个list,结果依次返回列表l的元素的平方,返回list s=[i*i for i in l] # 打印列表s print(s ...
- Visual Studio Code 1.44 设置简体中文界面语言(小白图文教程)
作为一款微软出品的编辑器,安装完毕后,默认界面竟然不是中文!而更“丧心病狂”的是菜单里竟然连“设置”或“设置语言”这种PC软件常见选项也没有!!这种设计对小白而言简直 反!!!人!!!类!!! (默认 ...
- VAuditDemo-任意文件读取
任意文件读取是属于文件操作漏洞的一种. 一般任意文件读取漏洞可以读取配置信息.甚至系统重要文件. 严重的话,就可能导致SSRF,进而漫游内网. 文件操作漏洞 任意文件删除--删除lock 任意文件复制 ...
- LeetCode | 第180场周赛--5356矩阵中的幸运数
给你一个 m * n 的矩阵,矩阵中的数字 各不相同 .请你按 任意 顺序返回矩阵中的所有幸运数. 幸运数是指矩阵中满足同时下列两个条件的元素: 在同一行的所有元素中最小 在同一列的所有元素中最大 示 ...
- 【数据库】MySQL数据库(三)
一.MySQL当中的索引: 数组当中我们见过索引:它的好处就是能够快速的通过下标.索引将一个信息查到:或者说 能够快速的定位到一个信息: 1.MySQL中的索引是什么? 它是将我们表中具有索引的那个字 ...