java编程中实现调用js方法分析

时间:2021-05-19

本文实例讲述了java编程中实现调用js方法。分享给大家供大家参考,具体如下:

/** 加载脚本引擎,并在java中调用js方法*/public void test2(){ ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); try { String str="2&1"; Double d = (Double) engine.eval(str); Integer i=d.intValue(); System.out.println(i); } catch (ScriptException ex) { ex.printStackTrace(); }}/** 在java中调用js,jdk1.6中有加载js引擎类,然后由它来调用js方法。* 并通过JDK平台给script的方法中的形参赋值*/public void test(String name){ ScriptEngineManager sem = new ScriptEngineManager(); /* *sem.getEngineByExtension(String extension)参数为js sem.getEngineByMimeType(String mimeType) 参数为application/javascript 或者text/javascript sem.getEngineByName(String shortName)参数为js或javascript或JavaScript */ ScriptEngine se = sem.getEngineByName("js"); try { String script = "function say(){ return 'hello,'"+name+"; }"; se.eval(script); Invocable inv2 = (Invocable) se; String res=(String)inv2.invokeFunction("say",name); System.out.println(res); } catch(Exception e) { e.printStackTrace(); }}/** 演示如何将java中对象作为js中全局变量,同时演示将file类赋给脚本语言,并获得其属性。*/public void testScriptVariables(){ ScriptEngineManager sem=new ScriptEngineManager(); ScriptEngine engine=sem.getEngineByName("js"); File file=new File("c://1.txt"); engine.put("f", file); try { engine.eval("println('path:'+f.getPath())");//无法使用alert方法 } catch (ScriptException e) { e.printStackTrace(); }}/** 演示如何在java中如何通过线程来启动一个js方法*/public void testScriptInterface() throws ScriptException{ ScriptEngineManager sem=new ScriptEngineManager(); ScriptEngine engine=sem.getEngineByName("js"); String script="var obj=new Object();obj.run=function(){println('test thread')}"; engine.eval(script); Object obj=engine.get("obj");//获取js中对象 Invocable inv=(Invocable)engine; Runnable r=inv.getInterface(obj,Runnable.class); Thread t=new Thread(r); t.start();}

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java字符与字符串操作技巧总结》、《Java数组操作技巧总结》、《Java数学运算技巧总结》、《Java编码操作技巧总结》和《Java数据结构与算法教程》

希望本文所述对大家java程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章