java编程中实现调用js方法分析
本文实例讲述了java编程中实现调用js方法。分享给大家供大家参考,具体如下:
/*
*加载脚本引擎,并在java中调用js方法
*/
publicvoidtest2()
{
ScriptEngineManagermanager=newScriptEngineManager();
ScriptEngineengine=manager.getEngineByName("javascript");
try{
Stringstr="2&1";
Doubled=(Double)engine.eval(str);
Integeri=d.intValue();
System.out.println(i);
}catch(ScriptExceptionex){
ex.printStackTrace();
}
}
/*
*在java中调用js,jdk1.6中有加载js引擎类,然后由它来调用js方法。
*并通过JDK平台给script的方法中的形参赋值
*/
publicvoidtest(Stringname)
{
ScriptEngineManagersem=newScriptEngineManager();
/*
*sem.getEngineByExtension(Stringextension)参数为js
sem.getEngineByMimeType(StringmimeType)参数为application/javascript或者text/javascript
sem.getEngineByName(StringshortName)参数为js或javascript或JavaScript
*/
ScriptEnginese=sem.getEngineByName("js");
try
{
Stringscript="functionsay(){return'hello,'"+name+";}";
se.eval(script);
Invocableinv2=(Invocable)se;
Stringres=(String)inv2.invokeFunction("say",name);
System.out.println(res);
}
catch(Exceptione)
{
e.printStackTrace();
}
}
/*
*演示如何将java中对象作为js中全局变量,同时演示将file类赋给脚本语言,并获得其属性。
*/
publicvoidtestScriptVariables()
{
ScriptEngineManagersem=newScriptEngineManager();
ScriptEngineengine=sem.getEngineByName("js");
Filefile=newFile("c://1.txt");
engine.put("f",file);
try{
engine.eval("println('path:'+f.getPath())");//无法使用alert方法
}catch(ScriptExceptione){
e.printStackTrace();
}
}
/*
*演示如何在java中如何通过线程来启动一个js方法
*/
publicvoidtestScriptInterface()throwsScriptException
{
ScriptEngineManagersem=newScriptEngineManager();
ScriptEngineengine=sem.getEngineByName("js");
Stringscript="varobj=newObject();obj.run=function(){println('testthread')}";
engine.eval(script);
Objectobj=engine.get("obj");//获取js中对象
Invocableinv=(Invocable)engine;
Runnabler=inv.getInterface(obj,Runnable.class);
Threadt=newThread(r);
t.start();
}
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java字符与字符串操作技巧总结》、《Java数组操作技巧总结》、《Java数学运算技巧总结》、《Java编码操作技巧总结》和《Java数据结构与算法教程》
希望本文所述对大家java程序设计有所帮助。