在JAVA程序中直接执行JAVASCRIPT代码
2012-10-16 15:38
387 查看
JDK6.0支持java与JAVASCRipT之间的互相调用,下面的实例将演示几种JAVA代码调用执行Javascript代码的方法。
view plaincopy to clipboardPRint?
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Test {
public static void main(String[] args) {
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByName("javascript");
try {
//调用直接JAVASCRIPT语句
se.eval("println('111');");
String tmpstr = "test string";
se.eval(("println('" + tmpstr + "');"));
//调用无参数方法JAVASCRIPT函数
se.eval("function sayHello() {"
+ " print('Hello '+strname+'!');return 'my name is '+strname;" + "}");
Invocable invocableEngine = (Invocable) se;
se.put("strname", "testname");
String callbackvalue=(String) invocableEngine.invokeFunction("sayHello");
System.out.println(callbackvalue);
//调用有参数JAVASCRIPT函数
se.eval("function sayHello2(strname2) {"
+ " print('Hello '+strname+'!');return 'my name is '+strname2;" + "}");
callbackvalue=(String)invocableEngine.invokeFunction("sayHello2", "testname2");
System.out.println(callbackvalue);
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
执行后,输出结果如下:
111
test string
Hello testname!my name is testname
Hello testname!my name is testname2
javax.script包为我们提供了不少用得上的类和方法,这样调用增加了前、后台之间的交互性,JAVASCRIPT函数可写在前台页面中,实现内容的变更对后台无影响,不用重新编译、发布
view plaincopy to clipboardPRint?
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Test {
public static void main(String[] args) {
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByName("javascript");
try {
//调用直接JAVASCRIPT语句
se.eval("println('111');");
String tmpstr = "test string";
se.eval(("println('" + tmpstr + "');"));
//调用无参数方法JAVASCRIPT函数
se.eval("function sayHello() {"
+ " print('Hello '+strname+'!');return 'my name is '+strname;" + "}");
Invocable invocableEngine = (Invocable) se;
se.put("strname", "testname");
String callbackvalue=(String) invocableEngine.invokeFunction("sayHello");
System.out.println(callbackvalue);
//调用有参数JAVASCRIPT函数
se.eval("function sayHello2(strname2) {"
+ " print('Hello '+strname+'!');return 'my name is '+strname2;" + "}");
callbackvalue=(String)invocableEngine.invokeFunction("sayHello2", "testname2");
System.out.println(callbackvalue);
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
执行后,输出结果如下:
111
test string
Hello testname!my name is testname
Hello testname!my name is testname2
javax.script包为我们提供了不少用得上的类和方法,这样调用增加了前、后台之间的交互性,JAVASCRIPT函数可写在前台页面中,实现内容的变更对后台无影响,不用重新编译、发布
相关文章推荐
- 在JAVA程序中直接执行JAVASCRIPT代码(简单调用实例)
- 在C# winform程序中直接执行javascript,调用javascript方法
- JDK8中Java调用Javascript脚本引擎动态定义与执行代码
- jsp引用javascript不执行但是直接javascript代码放到jsp文件可以
- oracle中直接调用java代码执行业务逻辑。。
- 如何将JAVA程序制作成可以直接执行的exe文件
- 脚本引擎执行javascript代码_Rhino引擎JAVA215
- Java学习之动态编译-动态脚本引擎-脚本引擎执行javascript代码
- C# Javascript引擎,如何在C#中执行现有的Javacript代码?
- Java执行JavaScript代码
- Java执行JavaScript代码
- java 程序执行的 内存代码划分即 java执行过程中的内存管理
- Javascript代码直接调用计算机中的程序
- 意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提交的javascript代码! 不敢藏私,特与大家分
- Android如何使代码等待一段时间再执行?直接贴程序麻烦高人来看一下。
- java 中使用ScriptEngine执行javascript脚本代码和使用中应该注意的事项
- [编写高质量代码:改善java程序的151个建议]建议52 推荐使用String直接量赋值
- Javascript代码直接调用计算机中的程序
- Java计算程序代码执行时间的方法小结