您的位置:首页 > 编程语言 > Java开发

Java 6对脚本的支持

2012-07-05 16:45 127 查看
下面的例子将演示通过js给javaBean进行初始化。

Config.java

public class Config {

private String version = "" ;

private int server = 0 ;

private String ip = "" ;

public String getVersion() {
return version;
}

public void setVersion(String version) {
this.version = version;
}

public int getServer() {
return server;
}

public void setServer(int server) {
this.server = server;
}

public String getIp() {
return ip;
}

public void setIp(String ip) {
this.ip = ip;
}

@Override
public String toString() {
return "version = " + getVersion() + ",server = " + getServer() + ",ip = " + getIp() ;
}
}
ScriptEngineForJavaScriptTest.java

package test.scriptengine;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import javax.script.Bindings;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.SimpleBindings;

import org.apache.commons.io.IOUtils;

public class ScriptEngineForJavaScriptTest {

/**
* @param args
*/
public static void main(String[] args) {
Config config = buildConfig() ;
System.out.println(config.toString());
}

public static Config buildConfig(){
ClassLoader _classLoad = Thread.currentThread().getContextClassLoader() ;
URL url = _classLoad.getResource("config.js") ;
Map<String, Object> _bindings = new HashMap<String, Object>() ;
Config config = new Config() ;

_bindings.put("config", config) ;
String _scriptContext = null ;
Reader _reader = null ;

try{
_reader = new InputStreamReader(url.openStream(), "UTF-8") ;
_scriptContext = IOUtils.toString(_reader) ;
}catch(IOException e){
throw new IllegalStateException("can't load config from url["+url+"]") ;
}
ScriptEngineManager factory = new ScriptEngineManager() ;
ScriptEngine engine = factory.getEngineByName("JavaScript") ;
Bindings buindings = new SimpleBindings(_bindings) ;
try{
engine.eval(_scriptContext, buindings) ;
}catch(Exception e){

}
return config ;
}
}


config.js初始化

config.version = "1.1.0" ;
config.setServer(1010) ;
config.setIp("192.168.1.1") ;


打印出来的结果:

version = 1.1.0,server = 1010,ip = 192.168.1.1


PS:比较有意思的是,可以直接对private的属性进行直接赋值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: