打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java 6对脚本的支持
分类: JAVA基础知识 2012-07-05 16:45 153人阅读 评论(0) 收藏 举报

下面的例子将演示通过js给javaBean进行初始化。

Config.java

  1. public class Config {  
  2.   
  3.     private String version = "" ;  
  4.       
  5.     private int server = 0 ;  
  6.       
  7.     private String ip = "" ;  
  8.   
  9.     public String getVersion() {  
  10.         return version;  
  11.     }  
  12.   
  13.     public void setVersion(String version) {  
  14.         this.version = version;  
  15.     }  
  16.   
  17.     public int getServer() {  
  18.         return server;  
  19.     }  
  20.   
  21.     public void setServer(int server) {  
  22.         this.server = server;  
  23.     }  
  24.   
  25.     public String getIp() {  
  26.         return ip;  
  27.     }  
  28.   
  29.     public void setIp(String ip) {  
  30.         this.ip = ip;  
  31.     }  
  32.       
  33.     @Override  
  34.     public String toString() {  
  35.         return "version = " + getVersion() + ",server = " + getServer() + ",ip = " + getIp() ;  
  36.     }  
  37. }  
ScriptEngineForJavaScriptTest.java
  1. package test.scriptengine;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStreamReader;  
  5. import java.io.Reader;  
  6. import java.net.URL;  
  7. import java.util.HashMap;  
  8. import java.util.Map;  
  9.   
  10. import javax.script.Bindings;  
  11. import javax.script.ScriptEngine;  
  12. import javax.script.ScriptEngineManager;  
  13. import javax.script.SimpleBindings;  
  14.   
  15. import org.apache.commons.io.IOUtils;  
  16.   
  17. public class ScriptEngineForJavaScriptTest {  
  18.   
  19.     /** 
  20.      * @param args 
  21.      */  
  22.     public static void main(String[] args) {  
  23.         Config config = buildConfig() ;  
  24.         System.out.println(config.toString());  
  25.     }  
  26.   
  27.     public static Config buildConfig(){  
  28.         ClassLoader _classLoad = Thread.currentThread().getContextClassLoader() ;  
  29.         URL url = _classLoad.getResource("config.js") ;  
  30.         Map<String, Object> _bindings = new HashMap<String, Object>() ;  
  31.         Config config = new Config() ;  
  32.           
  33.         _bindings.put("config", config) ;  
  34.         String _scriptContext = null ;  
  35.         Reader _reader = null ;  
  36.           
  37.         try{  
  38.             _reader = new InputStreamReader(url.openStream(), "UTF-8") ;  
  39.             _scriptContext = IOUtils.toString(_reader) ;  
  40.         }catch(IOException e){  
  41.             throw new IllegalStateException("can't load config from url["+url+"]") ;  
  42.         }  
  43.         ScriptEngineManager factory = new ScriptEngineManager() ;  
  44.         ScriptEngine engine = factory.getEngineByName("JavaScript") ;  
  45.         Bindings buindings = new SimpleBindings(_bindings) ;  
  46.         try{  
  47.             engine.eval(_scriptContext, buindings) ;  
  48.         }catch(Exception e){  
  49.               
  50.         }  
  51.         return config ;   
  52.     }  
  53. }  

config.js初始化
[javascript] view plaincopy
  1. config.version = "1.1.0" ;  
  2. config.setServer(1010) ;  
  3. config.setIp("192.168.1.1") ;  

打印出来的结果:
  1. version = 1.1.0,server = 1010,ip = 192.168.1.1  

PS:比较有意思的是,可以直接对private的属性进行直接赋值
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Java RPC通信机制之XML-RPC:Apache XML-RPC 3.0开发简介Java RPC通信机制之XML-RPC:Apache XML-RPC 3.0开发简介
java对象直接转换成xml格式!
SpringBoot拦截过滤与监听
JAXB解析xml
搞懂 XML 解析,徒手造 WEB 框架
jsp+servlet实现注册登录,不用数据库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服