package com.chen.java;
import java.io.File;
import java.io.FileReader;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import com.chen.interfaces.Greeter;
/**
* 这个场景的代码用于在web容器中调用js中定义的方法。Greeter 是java接口类,和js中定义的方法在名称,参数和返回值上保持一致
* @author Administrator
*
*/
public class TestScript {
public static void main(String[] args) {
String url = TestScript.class.getResource("/").getPath();
String str = null;
try {
str = URLDecoder.decode(url.toString(), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String path = new File(str).getParent() + File.separator + "js" + File.separator + "test.js";
try {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
engine.eval(new FileReader(path));
Greeter g = ((Invocable) engine).getInterface(Greeter.class);
System.out.println("result = " + g.greet("androidla"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
在java中的方法:
package com.chen.interfaces;
public interface Greeter {
String greet(String whom);
}
在js中定义的方法:
function greet(name) {
return "I'm write in JavaScript, hello, " + name;
}
运行结果:
result = I'm write in JavaScript, hello, androidla
相关参考:
http://www.ibm.com/developerworks/cn/java/j-lo-jse66/index.html
分享到:
相关推荐
标题中的“Java调用JavaScript代码”是指在Java程序中执行JavaScript脚本,实现跨语言通信。这主要通过Java的ScriptEngine接口和其相关的API来实现,这些API位于Java的javax.script包中。ScriptEngine接口提供了执行...
标题“Java如何与脚本(JavaScript)之间相互调用二”主要探讨的是在Java应用程序中如何集成和调用JavaScript代码,以及反过来JavaScript如何调用Java的功能。这涉及到跨语言交互的技术,通常通过Java的ScriptEngine...
使用`addJavascriptInterface()`方法暴露一个Java对象给JavaScript环境,这样JavaScript就可以调用这个对象的方法: ```java webView.addJavascriptInterface(new Object() { @JavascriptInterface @RequiresApi...
Java Applet调用C++ SSO登录JavaScript脚本开发教程主要涉及了跨语言交互、SSO(Single Sign-On,单点登录)技术以及自动化登录流程的实现。在本教程中,我们将探讨如何利用Java Applet作为桥梁,调用C++实现的SSO...
在IT领域,有时候我们需要在Java或JavaScript代码中执行操作系统级别的命令,例如运行系统脚本、管理文件、控制进程等。这种需求通常通过调用命令行(CMD)来实现。本文将详细探讨如何在Java和JavaScript中调用...
我们可以编写一个Java方法,从MongoDB中查询到Groovy脚本,然后利用上述的Groovy调用机制执行这些脚本。 例如,我们可能会有一个MongoDB集合,其中每个文档包含一个字段存储Groovy脚本。Java代码会连接到MongoDB,...
Java 调用 JS 方法是指在 Java 代码中调用 JavaScript 代码的方法,从而实现 Java 和 JavaScript 之间的交互。在本文中,我们将详细介绍 Java 调用 JS 方法的实现步骤和相关知识点。 Java 调用 JS 方法的实现 在 ...
SpringBoot整合Direct Web Remoting (DWR)是一个常见的技术实践,它允许JavaScript在浏览器端直接调用服务器端的Java方法,极大地增强了Web应用的交互性。在这个过程中,我们通常会结合使用FreeMarker或JSP作为视...
Java调用Javascript的技术涉及了在Java Applet中通过脚本接口与Web页面上的JavaScript代码进行交互。这部分技术在当前的Web开发中已较少使用,因为Java Applet的安全性问题和浏览器的兼容性问题,使得现代浏览器逐渐...
为了实现这一功能,ASP.NET AJAX框架提供了一种机制,即通过`[ScriptService]`特性来标记那些可以从客户端脚本调用的Web服务。本文将详细介绍`[ScriptService]`特性的使用方法及其背后的工作原理,并解决相关异常...
在实际应用中,C#通过调用Noesis.Javascript库的API,可以轻松地执行JavaScript脚本,如下所示: ```csharp using Noesis.Javascript; // 创建JavaScript引擎实例 var engine = new JavascriptEngine(); // 注册...
Kettle提供了丰富的转换和作业元素,能够处理各种数据源和目标,其中就包括对Java类的调用。在标题《kettle中调用java类》示例代码中,我们关注的是如何在Kettle的转换或作业中嵌入Java代码,以实现更复杂的数据处理...
通过Python Interpreter API,Java代码可以调用Python脚本并获取结果。 - **Kivy or PyDroid3**: 这些第三方库允许在Android设备上完整地运行Python环境,提供更强大的Python支持。 3. **Shell命令执行**: - **...
这篇博客(博文链接已提供)将介绍如何在Java中执行JavaScript代码,这主要得益于Java的脚本引擎API。 Java 6引入了JSR 223(Java Scripting API),使得开发者能够在Java应用程序中嵌入和执行各种脚本语言,包括...
这意味着在JavaScript脚本中可以调用Java对象的方法,以及在Java程序中可以执行JavaScript函数,并获取其返回值。 使用JavaScript脚本在Java中的基本步骤可以概括如下: 1. 编写JavaScript脚本:首先,需要编写...
然而,JavaScript脚本执行响应速度快,它不象Java applet那样要经历load、init、start和run那么复杂的过程。 然而,JavaScript的致命弱点是它的作用范围仅仅是在Web页。因此,它不象Java那样能独立地完成存取Web...
例如,在HTML脚本中可以使用JavaScript直接调用Java中的方法,只需要在调用语句前加以“java.lang.”表示。 在Java Applet和JavaScript混编中,可以使用JavaScript提供的Applet对象,访问Java Applet中的方法和变量...
然而,需要注意的是,出于安全考虑,从Android 4.2(API级别17)开始,仅标记为`@JavascriptInterface`的方法才能在JavaScript中调用,这是为了防止恶意脚本执行跨域操作。 此外,还可以通过`WebViewClient`或`...