我们首先的自己先建立一个文本文件,然后编写一个javascript函数,并保存文件,可以改后缀名为.js,例如我们的例子里面就写入一个这样的函数:
function cal(var1,var2) { return var1+var2-factor; }
然后我们开始写java代码,java代码主要为以下部分:
import java.io.FileNotFoundException; import java.io.FileReader; import java.util.Scanner; import javax.script.Bindings; import javax.script.Invocable; import javax.script.ScriptContext; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class ScriptText { public static void main(String[] args) throws FileNotFoundException, ScriptException, Exception { ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); Bindings bind = engine.createBindings(); bind.put("factor", 2); //这里绑定一个factor的值为2. engine.setBindings(bind,ScriptContext.ENGINE_SCOPE); Scanner input = new Scanner(System.in); while(input.hasNext()) { int first = input.nextInt(); int sec = input.nextInt(); System.out.println("输入的参数为:"+ first+ " , " + sec); engine.eval_r(new FileReader("E:/cal.js")); if(engine instanceof Invocable) { Invocable in = (Invocable)engine; Double result = (Double)in.invokeFunction("cal",first,sec); System.out.println("运算结果为:" + result.intValue()); } } } }
其中的“E:/cal.js”就是我们js文件的保存路径。并且这个主函数可以循环的输入。
我们运行一下这个程序得到的结果如下:
1
2
输入的参数为:1 , 2
运算结果为:1
上面也就是 调用了 1 + 2 - 2 = 1 ,所以结果为1
我们将js文件中的function方法改变下,改编为下面的函数:
function cal(var1,var2) { return var1+var2*factor; }
我们保存js文件,然后再继续在运行的程序中输入我们要计算的数字,(注意:这里不需要重新启动程序,因为输入时循环输入的)
我们再来看这个输出的结果:
1
2
输入的参数为:1 , 2
运算结果为:5
我们看到我们得到的结果为5,我们发现程序调用了我们修改后的js文件中函数,也就是调用方式为 1 + 2 * 2 = 5 所以我们得到的结果为5。
这个结果我们是否觉得有点神奇呢,我们一般的java程序在运行后,它在这次的运行中输入相同的值结果应该是不变的,但是这个程序在运行同一个程序的时候输入相同值但是得到的结果变化了,这主要是javascript指解释性语言,当程序需要用到js中的function的时候他才去解释执行这个函数,但是我们的function函数已经变化了,所以它就加载执行改变后的js代码,所以得到的就是我们有点意外的结果。
这样的优势是我们在有的应用中不需要重新启动程序就可以改变它的业务逻辑,这样在实时系统中会有比较重要的应用。
相关推荐
本文将深入探讨“Java调用JavaScript代码”的技术实现,以及它在实际项目中的应用场景。 Java和JavaScript虽然名字相似,但它们是两种完全不同的编程语言,各自有其特定的用途。Java是一种静态类型的、面向对象的...
### Java调用JS代码实现动态配置 在现代软件开发中,动态配置的需求越来越普遍,特别是在不希望频繁重启服务的情况下更新业务逻辑或算法时。本文将详细介绍如何利用Java调用JavaScript来实现这一目标,并通过一个...
1. **Java调用JavaScript** 当Java代码需要执行JavaScript时,可以使用`WebView`的`loadUrl()`或`evaluateJavascript()`方法。`loadUrl()`通常用于加载整个网页或者执行一段JS代码,例如: ```java webView....
在Java编程环境中,有时我们需要与JavaScript交互,例如执行一些动态脚本...开发者可以轻松地在Java程序中执行JavaScript代码,调用JavaScript函数,甚至传递Java对象到JavaScript环境,从而实现两者之间的协同工作。
这个"android 案例java 调用js"的资源提供了一个实际的示例,展示了如何在Android应用程序中调用JavaScript代码,以及JavaScript如何反过来调用Java方法。下面将详细讲解这一过程中的关键知识点。 首先,我们要了解...
Java 调用 JS 方法是指在 Java 代码中调用 JavaScript 代码的方法,从而实现 Java 和 JavaScript 之间的交互。在本文中,我们将详细介绍 Java 调用 JS 方法的实现步骤和相关知识点。 Java 调用 JS 方法的实现 在 ...
"java调用js方法.doc"很可能是详细描述如何从Java调用JS函数的步骤和示例。 在实际应用中,Java代码可能会通过Ajax发送一个请求到服务器,服务器解析请求后调用对应的JS函数,例如在"des.js"中执行解密操作,然后将...
Java调用Kettle代码主要涉及两个关键点:Java编程与Kettle(Pentaho Data Integration,简称PDI)工具的集成。Kettle是一款强大的ETL(Extract, Transform, Load)工具,用于数据抽取、转换和加载。Java作为广泛应用...
标题“dwr测试,java调用js”表明我们将探讨如何通过DWR进行测试,并演示Java如何调用JavaScript代码。DWR提供了两种主要的交互模式:`Call`和`Reverse Call`。`Call`模式是常规的前端到后端的通信,而`Reverse Call...
对于JAVA调用JS,通常发生在服务器端渲染(SSR)或者Node.js环境中。JAVA不能直接执行浏览器环境中的JS,但可以通过以下两种方式间接实现: 1. **服务器端渲染(SSR)**:在JAVA应用中集成一个如Nashorn这样的JS...
Java调用JavaScript 使用`addJavascriptInterface()`方法暴露一个Java对象给JavaScript环境,这样JavaScript就可以调用这个对象的方法: ```java webView.addJavascriptInterface(new Object() { @...
在JavaScript代码中,可以使用window.stub.jsMethod()来调用Java的方法。这里的stub就是之前在Java代码中通过addJavascriptInterface()方法声明的接口名字。JavaScript函数setValuesJson()被调用时,它会弹出一个...
"Java Class"步骤允许直接执行一个预编译的Java类,而"Execute Java Script"步骤则用于运行Java Script(JavaScript,非Java语言)代码,但也可以用来执行Java代码片段。 1. **Java Class步骤**: 使用Java Class...
- GWT(Google Web Toolkit):这是一个著名的Java到JavaScript转换框架,允许开发者用Java编写客户端应用,然后自动转换成优化过的JavaScript代码。 - Server-Side Rendering(SSR):Java代码转换成JavaScript...
3. **前端JS调用**:前端JavaScript代码获取到预支付交易会话标识后,会调用微信支付JSAPI,将prepay_id等相关参数传入,发起支付请求。这个实例中的"config"文件正是配置这些参数的地方。 4. **用户支付确认**:...
如果JavaScript代码定义了函数,可以在Java中调用它: ```java String jsFunction = "function add(a, b) { return a + b; }"; engine.eval(jsFunction); Invocable invocableEngine = (Invocable) engine; ...
Java可以调用本地的JavaScript引擎,如Rhino或Nashorn来执行JavaScript代码。例如,使用Nashorn,你可以在Java中这样执行JavaScript: ```java import javax.script.ScriptEngineManager; import javax.script....
SpringBoot整合Direct Web Remoting (DWR)是一个常见的技术实践,它允许JavaScript在浏览器端直接调用服务器端的Java方法,极大地增强了Web应用的交互性。在这个过程中,我们通常会结合使用FreeMarker或JSP作为视...
Java调用Javascript的技术涉及了在Java Applet中通过脚本接口与Web页面上的JavaScript代码进行交互。这部分技术在当前的Web开发中已较少使用,因为Java Applet的安全性问题和浏览器的兼容性问题,使得现代浏览器逐渐...
2. **Java调用JavaScript**: Android的`WebView`提供了`loadUrl()`方法,可以用来执行JavaScript代码。例如,如果你想执行一段JavaScript代码,可以这样做: ```java webView.loadUrl("javascript:console.log...