/*
* Test.java
*
* Created on 2007-9-19, 15:28:49
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
//package lbf.script;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.swing.JFrame;
/**
*
* @author hadeslee
*/
public class Test {
public static void main(String[] args)throws Exception
{
//根据js的后缀名生成一个解析JS的脚本解析引擎
ScriptEngine engin=new ScriptEngineManager().getEngineByExtension("js");
//查询一下这个引擎是否实现了下面很实用的接口
System.out.println(engin instanceof Invocable);
//声明两个对象,传入到JS里面去
JFrame jf=new JFrame("test");
List<String> list=new ArrayList<String>();
//得到挷定的键值对象,把当前的两个JAVA对象放进去
Bindings bind=engin.createBindings();
bind.put("jf",jf);
bind.put("list",list);
//把挷下的键值对象放进去,作用域是当前引擎的范围
engin.setBindings(bind, ScriptContext.ENGINE_SCOPE);
//用引擎执行一段写在JS文件里面的代码
Object obj=engin.eval(new FileReader("test.js"));
//这个时候返回值当然 是null了
System.out.println(obj);
//把当前的引擎强制转为Invocable,这样就可以调用定义在JS文件里面的一个一个函数了
Invocable in=(Invocable)engin;
//得到了从 JS里面返回来的对象
List<String> l=(List<String>)in.invokeFunction("getNames");
System.out.println(l);
//调用一下定义在JS里面的另一个函数
in.invokeFunction("testJS");
//最后调用一个函数,该函数可以使我们前面定义的窗体显示出来
in.invokeFunction("doSth");
}
}
test.js
function doSth(){
jf.setSize(500,300);
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
}
function getNames(){
list.add("doSth");
list.add("getNames");
return list;
}
function testJS(){
print('Helloworld!');
}
分享到:
相关推荐
C# 动态解析 javascript 脚本引擎源码
使用C#解析JS脚本,可以获取参数和函数名,并且进行调用执行
jj.SetValue("tt", new test_class()) jj.SetValue("datetime", new Func(() => DateTime.Now)) ...上次发了一个V8引擎别人说用不了说是 linux 上面的,,这次发个完整源码+例子,,,在说用不了,那就自己问题呢。,
三、在node.js环境下运行命令node app.js就可以把当前IP解析到域名上。 特别说明: 解析类型:ipv4是A,ipv6是AAAA,详见...
1,引入二维码解析的js插件llqrcode.js 2,解析的图片,这里采取的是上传图片解析(可以采用扫一扫输出的图片解析) //获取图片路径 let getObjectURL = function(file){ let url = null ; if (window....
JosunScript 脚本组件是一个采用ATL技术编写的高效稳定的脚本解析器。 能让你的CS模式程序(Vc、VB、Delphi、BC等)轻松解析VbScript,JavaScript脚本语言。 大大增强你的程序逻辑处理的灵活性和程序的交互能力,轻松...
自己实现的一个脚本解析引擎,没有使用任何第三方库,解析的脚本类似于JavaScript语言。 全部源代码。 开发语言: Delphi
JSParser 使用Tornado和JSBeautifier的python 2.7脚本来解析JavaScript文件中的相对URL。 用于在执行安全研究或Bug赏金狩猎时轻松发现AJAX请求。
火狐和IE支持javaScript脚本的一些区别
js代码-js 解析脚本
则自定义标签属性不会被浏览器解析,不会破坏原有静态效果,当引入domTemplate脚本,模板引擎回去解析这些标签属性, 并加载数据进行动态渲染。 下图:对比服务器页面渲染和使用domTemplate前端引擎开发流程 ...
该资源是一个百度地图批量解析地址生成的经纬度信息的js脚本,非常方便的可以将批量地址转化为经纬度。
教你如何连接数据库解析Kettle中的json串
这个程序可以打开网页,进而找出网页中的javascript脚本,提取出来,然后测试脚本功能。
Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精彩的演示。
获取显示在窗口中的文档的URL,并且从这个URL中解析出查询参数。 让浏览器载入并显示一个新的文档。 告诉浏览器在它的浏览历史中后退或前进,并且学会控制如打印等其他的浏览器函数。 打开一个新的浏览器窗口,...
NULL 博文链接:https://jiangyongyuan.iteye.com/blog/833939
本js脚本可解析传递给html的参数。在html网页里引用该脚本调用相关的方法来解析。var str = [removed].search; var r = getQueryStringArgs(str);
FeedEk 是个 jQuery 插件,解析和显示 RSS 和 Atom 订阅。FeedEk 使用 Google Feed API 来检索订阅。用户可以很方便的从任意的 domain 中获取订阅,不需要服务器端脚本。在线演示 标签:FeedEk