java调用javascript实例
2010-06-15 20:13
316 查看
/* * JSExploration.java * @author Lucky * Created on November 4, 2008, 11:16 AM */ package com.pengzhoushuo.js; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.Properties; import org.mozilla.javascript.Context; import org.mozilla.javascript.Function; import org.mozilla.javascript.Scriptable; /** * this class provide a way for java class to call java script code<p> * */ public class JSExploration { private Context cx; private Scriptable scope; public JSExploration() { this.cx = Context.enter(); this.scope = cx.initStandardObjects(); } public Object runJavaScript(String filename) { String jsContent = this.getJsContent(filename); Object result = cx.evaluateString(scope, jsContent, filename, 1, null); return result; } private String getJsContent(String filename) { LineNumberReader reader = null; InputStream is = null; try { is = this.getClass().getClassLoader().getResourceAsStream(filename); reader = new LineNumberReader(new InputStreamReader(is)); String s = null; StringBuffer sb = new StringBuffer(); while ((s = reader.readLine()) != null) { sb.append(s).append("\n"); } return sb.toString(); } catch (Exception e) { // TODO Auto-generated catch block //e.printStackTrace(); return null; }finally{ if(reader != null) try { reader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(is != null) try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public Scriptable getScope() { return scope; } /** * 调用JAVASCRIPT对密码进行加?? * @param key 密码明文 * @return 密码密文 */ public static String getKey(String key) { //javacript file path String filename = "com/pengzhoushuo/js/RSAKey.js"; JSExploration jsExploration = new JSExploration(); Object result = jsExploration.runJavaScript(filename); Scriptable scope = jsExploration.getScope(); //getKey是javascript中对应的方法名 Function sum = (Function) scope.get("getKey", scope); Object isPrime = sum.call(Context.getCurrentContext(), scope, sum, new Object[] {key}); return Context.toString(isPrime); } public static void main(String[] args){ System.out.println(JSExploration.getKey("a1234567")); } }
相关文章推荐
- android-WebView详解实例(JavaScript调用Java方法,Java调用JavaScript方法)
- 在JAVA程序中直接执行JAVASCRIPT代码(简单调用实例)
- Java: RMI调用实例
- Java: RMI调用实例2
- javascript 调用c#变量实例
- 功能完善的Java连接池调用实例
- JAVA调用JAVASCRIPT的JAVA包
- JAVASCRIPT调用JAVA
- Java 反射机制运用实例(动态调用类的方法)
- ABAP--一个极好的调用外部java程序的Search Help Exit的实例(RFC好例子)
- Java调用Oracle的存储过程(实例)
- JAVA中反射调用实例
- java中调用存储过程实例
- Java中反射调用的简单实例
- java 反射入门-属性方法调用实例
- ASP.NET Ajax实例—Javascript直接调用服务器C#代码
- java axis webservice 调用实例
- ABAP--一个极好的调用外部java程序的Search Help Exit的实例(RFC好例子)
- java如何与脚本(javaScript)之间相互调用二
- ASP.net AJAX 调用PageMethods实例(javascript调用服务器页面方法)