/*
* 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"));
}
}
分享到:
相关推荐
本文将深入探讨“Java调用JavaScript代码”的技术实现,以及它在实际项目中的应用场景。 Java和JavaScript虽然名字相似,但它们是两种完全不同的编程语言,各自有其特定的用途。Java是一种静态类型的、面向对象的...
Java调用Javascript的技术涉及了在Java Applet中通过脚本接口与Web页面上的JavaScript代码进行交互。这部分技术在当前的Web开发中已较少使用,因为Java Applet的安全性问题和浏览器的兼容性问题,使得现代浏览器逐渐...
而在某些场景下,可能需要从Java代码中调用JavaScript编写的函数,并获取这些函数的执行结果。为了实现Java和JavaScript之间的通信,Android WebView提供了addJavascriptInterface()方法。这个方法允许你向WebView...
1. **Java调用JavaScript**: - `loadUrl`: 使用WebView的`loadUrl`方法可以加载网页URL或执行JavaScript代码。例如,要执行一段JavaScript代码,我们可以这样做: ```java webView.loadUrl("javascript:...
Java 调用 JS 方法是指在 Java 代码中调用 JavaScript 代码的方法,从而实现 Java 和 JavaScript 之间的交互。在本文中,我们将详细介绍 Java 调用 JS 方法的实现步骤和相关知识点。 Java 调用 JS 方法的实现 在 ...
**Java调用命令行** 在Java中,我们可以使用`Runtime`类或`ProcessBuilder`类来执行命令行操作。 1. **使用Runtime.exec()** `Runtime.getRuntime().exec(command)` 是最基础的方法,用于执行指定的系统命令。`...
接下来,将总结Java调用JavaScript实现字符串计算器的相关知识点: 1. 使用javax.script包中的类:要实现这一功能,必须使用javax.script包中的ScriptEngineManager类和ScriptEngine类。 2. 创建JavaScript脚本...
Java调用Chrome浏览器内核是开发桌面应用时一个常见的需求,尤其在需要嵌入Web页面或者与Web内容交互的场景下。CEF(Chromium Embedded Framework)是一个开源项目,它允许开发者将Google Chrome的Blink渲染引擎和V8...
这个Java微支付JS调用实例是针对微信支付API的一个实际应用,它可以帮助开发者更轻松地集成微信支付功能到自己的应用程序中。在这个过程中,开发者可能会遇到各种问题,因为微信的API文档可能不够详尽,或者存在一些...
在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...
总结来说,Java调用IE内核主要涉及Java与ActiveX控件的交互,这一技术虽然有一定的历史背景,但在现代Web开发中已经较少使用,更多的现代解决方案倾向于使用标准Web技术或者基于Chromium的框架。理解和学习这个知识...
Java调用Kettle代码主要涉及两个关键点:Java编程与Kettle(Pentaho Data Integration,简称PDI)工具的集成。Kettle是一款强大的ETL(Extract, Transform, Load)工具,用于数据抽取、转换和加载。Java作为广泛应用...
对于Java调用JavaScript,我们可以使用`loadUrl()`方法,传入一个JavaScript字符串来执行: ```java webView.loadUrl("javascript:window.someJsFunction()"); ``` 在JavaScript端,你需要定义这个`someJsFunction...
源代码可能包括创建`ScriptEngine`、编写和执行JavaScript代码、以及调用JavaScript函数的示例。 总的来说,通过JSR 223,Java开发者可以轻松地在Java程序中嵌入JavaScript,实现两者的交互,从而利用JavaScript的...
在"TestDwr"这个压缩包中,我们可以预期包含了一个简单的DWR实例,展示了如何利用DWR将Java方法暴露给JavaScript来调用。以下是一些关于DWR的关键知识点: 1. **DWR配置**:DWR的使用首先需要在服务器端进行配置,...
2. **Java调用JavaScript**: Android的`WebView`提供了`loadUrl()`方法,可以用来执行JavaScript代码。例如,如果你想执行一段JavaScript代码,可以这样做: ```java webView.loadUrl("javascript:console.log...
本文将详细介绍如何利用Java调用JavaScript来实现这一目标,并通过一个具体的示例代码进行深入剖析。 #### 一、背景介绍 在传统的应用程序中,更改算法通常意味着需要修改源代码并重新编译部署。这种方式不仅效率...
摘要:Java源码,初学实例,EJB调用实例 各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 2个目标文件 摘要:Java源码,网络相关,...
在Java中调用JavaScript,可以使用ScriptEngineManager来创建一个特定的ScriptEngine实例,例如用于执行JavaScript的Nashorn引擎。以下是一个简单的示例: ```java import javax.script.ScriptEngineManager; ...
2. **JavaScript到Java的互操作性**:Rhino允许JavaScript代码直接调用Java对象和方法,反之亦然,极大地增强了两种语言的交互性。 3. **嵌入到Java应用程序**:Rhino可以轻易地被嵌入到Java应用程序中,作为动态...