jdk7 新特性-Java语言的动态性-脚本语言支持api-执行脚本上下文 03
2014-11-20 14:32
666 查看
package org.yla.java语言的动态性.执行脚本上下文03;
import java.io.FileWriter;
import java.io.IOException;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
* 测试脚本执行的上下文
* javax.script Interface ScriptContext
* @author Administrator
*
*/
public class TestScriptContext {
public static void main(String[] args) throws IOException, ScriptException {
// new TestScriptContext().scriptToFile();
// new TestScriptContext().scriptContextAttribute();
new TestScriptContext().scriptContextBindings();
}
//利用ScriptContext脚本语言执行过程中的上下文 把信息输出到文件中
public void scriptToFile() throws IOException, ScriptException{
ScriptEngine engine =getJavaScriptEngine();
// 获得context
ScriptContext context =engine.getContext();
context.setWriter(new FileWriter("output.txt"));
engine.eval("println('这里是写出文件的内容...');");
}
//自定义作用域
public void scriptContextAttribute(){
ScriptEngine engine =getJavaScriptEngine();
// 获得context
ScriptContext context =engine.getContext();
//表示的作用域对应的是从同一引擎工厂中创建出来的所有脚本引擎对象
context.setAttribute("name", "huochaigun-GLOBAL_SCOPE", ScriptContext.GLOBAL_SCOPE);
//作用域表示当前的脚本引擎
context.setAttribute("name", "huochaigun-ENGINE_SCOPE", ScriptContext.ENGINE_SCOPE);
String s =(String) context.getAttribute("name");
System.out.println(s);
// 结果是:huochaigun-ENGINE_SCOPE
}
//语言绑定对象 下面的例子说明语言绑定对象的优先级顺序的示例
public void scriptContextBindings() throws ScriptException{
ScriptEngine engine =getJavaScriptEngine();
// 获得context
ScriptContext context =engine.getContext();
Bindings bindings1 =engine.createBindings();
bindings1.put("name", "scriptContextBindings-huochaigun-GLOBAL_SCOPE");
context.setBindings(bindings1, ScriptContext.GLOBAL_SCOPE);
Bindings bindings2 =engine.createBindings();
bindings2.put("name", "scriptContextBindings-huochiagun-ENGINE_SCOPE");
context.setBindings(bindings1, ScriptContext.ENGINE_SCOPE);
engine.eval("println(name);");
}
public ScriptEngine getJavaScriptEngine() {
ScriptEngineManager manager = new ScriptEngineManager();
return manager.getEngineByName("JavaScript");
}
}
import java.io.FileWriter;
import java.io.IOException;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
* 测试脚本执行的上下文
* javax.script Interface ScriptContext
* @author Administrator
*
*/
public class TestScriptContext {
public static void main(String[] args) throws IOException, ScriptException {
// new TestScriptContext().scriptToFile();
// new TestScriptContext().scriptContextAttribute();
new TestScriptContext().scriptContextBindings();
}
//利用ScriptContext脚本语言执行过程中的上下文 把信息输出到文件中
public void scriptToFile() throws IOException, ScriptException{
ScriptEngine engine =getJavaScriptEngine();
// 获得context
ScriptContext context =engine.getContext();
context.setWriter(new FileWriter("output.txt"));
engine.eval("println('这里是写出文件的内容...');");
}
//自定义作用域
public void scriptContextAttribute(){
ScriptEngine engine =getJavaScriptEngine();
// 获得context
ScriptContext context =engine.getContext();
//表示的作用域对应的是从同一引擎工厂中创建出来的所有脚本引擎对象
context.setAttribute("name", "huochaigun-GLOBAL_SCOPE", ScriptContext.GLOBAL_SCOPE);
//作用域表示当前的脚本引擎
context.setAttribute("name", "huochaigun-ENGINE_SCOPE", ScriptContext.ENGINE_SCOPE);
String s =(String) context.getAttribute("name");
System.out.println(s);
// 结果是:huochaigun-ENGINE_SCOPE
}
//语言绑定对象 下面的例子说明语言绑定对象的优先级顺序的示例
public void scriptContextBindings() throws ScriptException{
ScriptEngine engine =getJavaScriptEngine();
// 获得context
ScriptContext context =engine.getContext();
Bindings bindings1 =engine.createBindings();
bindings1.put("name", "scriptContextBindings-huochaigun-GLOBAL_SCOPE");
context.setBindings(bindings1, ScriptContext.GLOBAL_SCOPE);
Bindings bindings2 =engine.createBindings();
bindings2.put("name", "scriptContextBindings-huochiagun-ENGINE_SCOPE");
context.setBindings(bindings1, ScriptContext.ENGINE_SCOPE);
engine.eval("println(name);");
}
public ScriptEngine getJavaScriptEngine() {
ScriptEngineManager manager = new ScriptEngineManager();
return manager.getEngineByName("JavaScript");
}
}
相关文章推荐
- jdk7 新特性-Java语言的动态性-脚本语言支持api-语言绑定02
- jdk7 新特性-Java语言的动态性-脚本语言支持api-方法调用05
- jdk7 新特性-Java语言的动态性-脚本语言支持api-脚本的编译04
- jdk7 新特性-Java语言的动态性-脚本语言支持api-使用案例06
- jdk7 新特性-Java语言的动态性-脚本语言支持api-脚本引擎01
- JDK1.7新特性(3):java语言动态性之脚本语言API
- JAVA的动态性之脚本语言支持API
- JAVA的动态性之脚本语言支持API
- Java7 一些新特性及脚本语言支持API--笔记
- JDK1.7新特性(4):java语言动态性之反射API
- 深入Java7的一些新特性以及对脚本语言支持API的介绍
- 动态调用动态语言之Java脚本API
- Java语言的动态性支持
- [JAVA语言学习][小技巧]利用Batch批处理脚本实现控制台快速编译执行JAVA程序
- Java平台对脚本语言支持之ScriptEngine创建方式
- JQuery html API支持解析执行Javascript脚本功能实现-代码分析
- Java平台对脚本语言支持之ScriptEngine创建方式
- 动态调用动态语言的Java脚本API
- JDK6新特性二——脚本语言支持(Scripting)
- Java平台对脚本语言支持之ScriptEngine创建方式