电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

在服务器端运行JavaScript文件的方法VIP免费

在服务器端运行JavaScript文件的方法_第1页
1/22
在服务器端运行JavaScript文件的方法_第2页
2/22
在服务器端运行JavaScript文件的方法_第3页
3/22
使用javax.scriptAPI本节给出了javax.scriptAPI的概览,展示了如何执行脚本来访问Java对象、如何从Java代码调用JavaScript函数,以及如何为所编译的脚本实现缓存机制。执行脚本javax.scriptAPI十分简单。可以先创建一个ScriptEngineManager实例,有了这个实例就能用下列方法中的任一个来获得ScriptEngine对象(参见清单1):getEngineByName()getEngineByExtension()getEngineByMimeType()清单1.获得一个ScriptEngine实例importjavax.script.*;...ScriptEngineManagermanager=newScriptEngineManager();ScriptEngineengine=manager.getEngineByName("JavaScript");...engine.eval(...);此外,还可以通过getEngineFactories()获得可用脚本引擎的列表。目前,只有JavaScript引擎是与JDK6捆绑的,不过ScriptEngineManager实现了一种发现机制,能发现支持JSR-223ScriptingfortheJavaPlatform的第三方引擎。只需将脚本引擎的JAR文件放入CLASSPATH即可。获得了javax.script.ScriptEngine实例后,就可以调用eval()来执行脚本了。也可以将Java对象作为脚本变量导出,其间要将Bindings实例传递给eval()方法。清单2所示的ScriptDemo.java示例导出两个名为demoVar和strBuf的变量、执行DemoScript.js脚本,然后让这些变量输出它们修改后的值。清单2.ScriptDemo.java示例packagejsee.demo;importjavax.script.*;importjava.io.*;publicclassScriptDemo{publicstaticvoidmain(Stringargs[])throwsException{//GettheJavaScriptengineScriptEngineManagermanager=newScriptEngineManager();ScriptEngineengine=manager.getEngineByName("JavaScript");//SetJavaScriptvariablesBindingsvars=newSimpleBindings();vars.put("demoVar","valuesetinScriptDemo.java");vars.put("strBuf",newStringBuffer("stringbuffer"));//RunDemoScript.jsReaderscriptReader=newInputStreamReader(ScriptDemo.class.getResourceAsStream("DemoScript.js"));try{engine.eval(scriptReader,vars);}finally{scriptReader.close();}//GetJavaScriptvariablesObjectdemoVar=vars.get("demoVar");System.out.println("[Java]demoVar:"+demoVar);System.out.println("Javaobject:"+demoVar.getClass().getName());System.out.println();ObjectstrBuf=vars.get("strBuf");System.out.println("[Java]strBuf:"+strBuf);System.out.println("Javaobject:"+strBuf.getClass().getName());System.out.println();ObjectnewVar=vars.get("newVar");System.out.println("[Java]newVar:"+newVar);System.out.println("Javaobject:"+newVar.getClass().getName());System.out.println();}}DemoScript.js文件(如清单3所示)包含一个printType()函数,该函数可用来输出每个脚本变量的类型。这个示例会调用strBuf对象的append()方法、修改demoVar的值并设置一个名为newVar的新变量脚本。如果传递给printType()的对象具有getClass()方法,那么它一定是个Java对象,该对象的类名由obj.getClass().name获得。这个JavaScript表达式调用此对象的java.lang.Class实例的getName()方法。如果此对象不具备getClass,那么printType()就会调用toSource()方法,而该方法是所有JavaScript对象都有的。清单3.DemoScript.js示例println("Startscript\r\n");//OutputthetypeofanobjectfunctionprintType(obj){if(obj.getClass)println("Javaobject:"+obj.getClass().name);elseprintln("JSobject:"+obj.toSource());println("");}//Printvariableprintln("[JS]demoVar:"+demoVar);printType(demoVar);//CallmethodofJavaobjectstrBuf.append("usedinDemoScript.js");println("[JS]strBuf:"+strBuf);printType(strBuf);//ModifyvariabledemoVar="valuesetinDemoScript.js";println("[JS]demoVar:"+demoVar);printType(demoVar);//SetanewvariablevarnewVar={x:1,y:{u:2,v:3}}println("[JS]newVar:"+newVar);printType(newVar);println("Endscript\r\n");清单4是ScriptDemo.java示例的输出。值得注意的是demoVar作为JavaScriptString导出,而strBu...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

在服务器端运行JavaScript文件的方法

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部