java中使用Rhino执行js文件中的function
2008-04-02 09:51
531 查看
参考资料
Mozilla Rhino首页:
http://www.mozilla.org/rhino/
Rhino 下载
Rhino 官方文档
test.js
function Transfer(content, baseurl)
{
//TODO
var result = "";
if(content.indexOf('<body>') > -1 && content.indexOf('</body>') > -1)
{
result = content.substring(content.indexOf('<body>') + 6,content.indexOf('</body>'));
}
return result;
}
java code
@Test
public void ExecuteJavascriptByRhino() throws BSFException, FileNotFoundException, IOException
{
String jsPath = "c:\\test.js";
String jsFunction = "Transfer";
String content = "<html><head><title>测试测试</title></head><body><div>aaaa</div>html body ,hahahaha ,垃圾</body></html>";
String baseurl = "http://www.edzh.com";
//开始调用javascript函数
Context cx = Context.enter();
try {
Scriptable scope = cx.initStandardObjects();
cx.evaluateReader(scope, new java.io.FileReader(jsPath), "<cmd>", 1, null);
Object fObj = scope.get(jsFunction, scope);
if (!(fObj instanceof Function)) {
System.out.println("找不到方法" +jsFunction);
} else {
Object functionArgs[] = { content, baseurl};
Function f = (Function)fObj;
Object result = f.call(cx, scope, scope, functionArgs);
System.out.println("返回结果:"+Context.toString(result));
}
} finally {
Context.exit();
}
}
Mozilla Rhino首页:
http://www.mozilla.org/rhino/
Rhino 下载
Rhino 官方文档
test.js
function Transfer(content, baseurl)
{
//TODO
var result = "";
if(content.indexOf('<body>') > -1 && content.indexOf('</body>') > -1)
{
result = content.substring(content.indexOf('<body>') + 6,content.indexOf('</body>'));
}
return result;
}
java code
@Test
public void ExecuteJavascriptByRhino() throws BSFException, FileNotFoundException, IOException
{
String jsPath = "c:\\test.js";
String jsFunction = "Transfer";
String content = "<html><head><title>测试测试</title></head><body><div>aaaa</div>html body ,hahahaha ,垃圾</body></html>";
String baseurl = "http://www.edzh.com";
//开始调用javascript函数
Context cx = Context.enter();
try {
Scriptable scope = cx.initStandardObjects();
cx.evaluateReader(scope, new java.io.FileReader(jsPath), "<cmd>", 1, null);
Object fObj = scope.get(jsFunction, scope);
if (!(fObj instanceof Function)) {
System.out.println("找不到方法" +jsFunction);
} else {
Object functionArgs[] = { content, baseurl};
Function f = (Function)fObj;
Object result = f.call(cx, scope, scope, functionArgs);
System.out.println("返回结果:"+Context.toString(result));
}
} finally {
Context.exit();
}
}
相关文章推荐
- 使用java以及jdbc不使用第三方库执行sql文件脚本
- 使用cmd编译java文件成功生成class,但是不能执行
- windows环境下使用命令行执行java程序输出文件编码问题
- 使用getScript()方法异步加载并执行js文件
- 【零碎JAVA】使用jar命令创建可执行的jar文件
- 使用java的java 命令,直接调用执行class文件
- java调用js执行js文件
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- 在windows下使用cmd命令行对java文件进行编译和执行
- java使用gbk编码读取utf-8的js文件吃掉回车问题
- 浅析javac和java的使用:MVC模式下,在包中的java文件的编译执行
- 使用ajaxfileupload.js上传文件成功之后,没有执行success方法
- 拖拽文件上传(Java篇)dropzone.js的简单使用
- 使用fat jar和exe4j把java程序打包成exe执行文件---转载的
- java文件上传ajaxFileUpload.js使用方法
- 25.使用getScript()方法异步加载并执行js文件
- java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行(改进)
- 使用getScript()方法异步加载并执行js文件
- 使用java命令行执行依赖外部jar包的class文件