如何通过java代码调用jsJDK1.6版添加JAVA代码使用js了新JAVA代码使用js的ScriptEngine类JAVA代码使用js , 允许用户直接执行js代码 。
在Java中直接调用js代码
不能调用浏览器中定义的js函数JAVA代码使用js , 会抛出异常提示ReferenceError: “alert” is not defined 。
package com.sinaapp.manjushri;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
【JAVA代码使用js java代码怎么使用】import javax.script.ScriptException;/*** 直接调用js代码*/
public class ScriptEngineTest {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try{
engine.eval("var a=3; var b=4;print (a b);");
// engine.eval("alert(\"js alert\");");// 不能调用浏览器中定义的js函数 // 错误,会抛出alert引用不存在的异常
}catch(ScriptException e){
e.printStackTrace();
}
}
}
Java调用JS脚本里的方法;本例子使用了JDK 以上的javax script包 通过Invocable接口实现JAVA调用JS脚本里的方法 本例中调用分为内部执行脚本和外部执行脚本 外部执行脚本分为不带参数调用和带参数调用 主要采用invokeFunction方法调用ObjectinvokeFunction(String name Object… args)用于调用脚本中定义的顶层程序和函数ObjectinvokeMethod(Object thiz String name Object… args)对以前的脚本执行中已经编译的脚本对象(以 ScriptEngine 的状态保持)调用某一方法package de javase;import javax script Invocable;import javax script ScriptEngineManager;import javax script ScriptEngine;import java io File;import java io Reader;import java io FileReader;public class AjavaInvokingFunction {public static void main(String[] args) {// 获得一个JavaScript脚本引擎 也可以是ECMAScript脚本引擎ScriptEngineManager manager = new ScriptEngineManager()ScriptEngine engine = manager getEngineByName( JavaScript )String titlescript = function sayTitle() {println( 源码实例 使用javax script调用JS脚本里的方法 )println( )} ;try {
// 调用内部脚本执行engine eval(titlescript)// 转换为InvocableInvocable invocableEngine = (Invocable) engine;// 不带参数调用sayTitle方法invocableEngine invokeFunction( sayTitle )// 调用外部脚本执行// 创建JS文件的File对象 并读入流File functionscript = new File( ajava js )Reader reader = new FileReader(functionscript)// 开始执行ajava js里的程序engine eval(reader)// 不带参数调用sayHello方法invocableEngine invokeFunction( sayHello )// 带参数调用sayHello方法invocableEngine invokeFunction( sayHello mark )} catch (Exception e) {e printStackTrace()}}}ajava js文件function sayHello(){sayHello(null)}function sayHello(name){if(name==null){println( 欢迎JAVA代码使用js你!请注册Ajava会员 )}else{println(name独立JAVA社区欢迎JAVA代码使用js你 )}}运行结果(控制台)源码实例 使用javax script调用JS脚本里的方法 lishixinzhi/Article/program/Java/hx/201311/26436
如何在java中调用js方法在Java中调用js文件中的function , 传入调用参数,并获取返回值
js文件中的merge函数将两个参数a,b相加,并返回c 。
// expression.js
function merge(a, b) {
c = a * b;
return c;
}
在Java代码中读取js文件,并参数两个参数,然后回去返回值 。
package com.sinaapp.manjushri;
import java.io.FileReader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
/*** Java调用并执行js文件,传递参数,并活动返回值** @author manjushri*/
public class ScriptEngineTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String jsFileName = "expression.js";// 读取js文件
FileReader reader = new FileReader(jsFileName);// 执行指定脚本
engine.eval(reader);
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)engine;// 调用merge方法,并传入两个参数
// c = merge(2, 3);
Double c = (Double)invoke.invokeFunction("merge", 2, 3);
System.out.println("c = "c);
}
reader.close();
}
}
输出结果:
c = 5.0
如何用java执行指定页面中的js代码要在java中执行js代码,首先明白,java不支持浏览器本身的方法 。支持自定义的js方法,否则会报错
先新建一个js文件:jsss.js
内容如下:
function aa(a,b){return a b;
}
然后在java中写代码:
public class ZipTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String jsFileName="G:\\javaPro\\zmwmcc\\WebRoot\\jsss.js";
FileReader reader = new FileReader(jsFileName);// 执行指定脚本engine.eval(reader);
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)engine;// 调用merge方法,并传入两个参数
Double c = (Double)invoke.invokeFunction("aa", 2, 3); //调用了js的aa方法
System.out.println(c);
}
// engine.eval("alert(\"js alert\");");// 不能调用浏览器中定义的js函数 // 错误,会抛出alert引用不}
}
关于JAVA代码使用js和java代码怎么使用的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 如何下载ppt模板,wps如何下载ppt模板
- 网络游戏正当防卫四,游戏 正当防卫4
- 直播电话话术公式,直播电话邀约话术
- python随机数的函数 随机数 python
- 如何认识灰色营销,如何认识酒吧营销
- iis添加ASP.NET映射,iis 端口映射
- go语言高并发聊天程序 go语言 高并发
- 过关益智游戏,过关益智游戏推荐
- 虚拟主机的绝对路径,虚拟路径和绝对路径