java中执行js(java中执行sql语句)

本文目录一览:

如何在java中调用js方法

有时候因为需要,我们想在Java中调用js方法,不再是像页面中一个事件触发,该如何做到呢?今天下午没事得时候小研究了下,现跟大家分享一下。不对之处,望大家指正,共同进步!

[java] view plain copy

/*

* 加载脚本引擎,并在java中调用js方法

*/

public void test2()

{

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = manager.getEngineByName(“JavaScript”);

try {

String str=”21″;

Double d = (Double) engine.eval(str);

Integer i=d.intValue();

System.out.println(i);

} catch (ScriptException ex) {

ex.printStackTrace();

}

}

[java] view plain copy

/*

* 在java中调用js,jdk1.6中有加载js引擎类,然后由它来调用js方法。

* 并通过JDK平台给script的方法中的形参赋值

*/

public void test(String name)

{

ScriptEngineManager sem = new ScriptEngineManager();

/*

*sem.getEngineByExtension(String extension)参数为js

sem.getEngineByMimeType(String mimeType) 参数为application/javascript 或者text/javascript

sem.getEngineByName(String shortName)参数为js或javascript或JavaScript

*/

ScriptEngine se = sem.getEngineByName(“js”);

try

{

String script = “function say(){ return ‘hello,'”+name+”; }”;

se.eval(script);

Invocable inv2 = (Invocable) se;

String res=(String)inv2.invokeFunction(“say”,name);

System.out.println(res);

}

catch(Exception e)

{

e.printStackTrace();

}

}

[java] view plain copy

/*

* 演示如何将java中对象作为js中全局变量,同时演示将file类赋给脚本语言,并获得其属性。

*/

public void testScriptVariables()

{

ScriptEngineManager sem=new ScriptEngineManager();

ScriptEngine engine=sem.getEngineByName(“js”);

File file=new File(“c://1.txt”);

engine.put(“f”, file);

try {

engine.eval(“println(‘path:’+f.getPath())”);//无法使用alert方法

} catch (ScriptException e) {

e.printStackTrace();

}

}

[java] view plain copy

/*

* 演示如何在java中如何通过线程来启动一个js方法

*/

public void testScriptInterface() throws ScriptException

{

ScriptEngineManager sem=new ScriptEngineManager();

ScriptEngine engine=sem.getEngineByName(“js”);

String script=”var obj=new Object();obj.run=function(){println(‘test thread’)}”;

engine.eval(script);

Object obj=engine.get(“obj”);//获取js中对象

Invocable inv=(Invocable)engine;

Runnable r=inv.getInterface(obj,Runnable.class);

Thread t=new Thread(r);

t.start();

}

这样java就可以执行动态语言了,不过注意是jdk1.6版本的哦~

这样写不知道你能不能看懂,这个问题远标java就已经讲过这个题目了,希望能帮到你!

如何通过java代码调用js

JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码。

在Java中直接调用js代码

不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert” is not defined。

package com.sinaapp.manjushri;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

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代码

在Java中直接调用js代码

不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert” is not defined。

在Java中绑定js变量

在调用engine.get(key);时,如果key没有定义,则返回null

java怎么调用javascript

可参考:

package javaIjs;

/**

* @param args

*/

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 = System.getProperty(“user.dir”)+”/src/javaIjs/expression.js”;

// 读取js文件

FileReader reader = new FileReader(jsFileName);

// 执行指定脚本

System.out.println(engine.getContext().getReader());

engine.eval(reader);

if (engine instanceof Invocable) {

Invocable invoke = (Invocable) engine;

// 调用merge方法,并传入两个参数

// c = merge(2, 3);

Double c = (Double) invoke.invokeFunction(“merge1”, 21, 3);

System.out.println(“c = ” + c);

}

reader.close();

}

}

java程序中运行js脚本

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

public class ExecJs {

/**

* 记录日志类

*/

private Logger log = Logger.getLogger(ExecJs.class);

/**

* 后置处理,执行js脚本

* @param js

* @throws Exception

*/

public void execJs(String js, MapString,Object map) throws Exception {

if (log.isDebugEnabled()) {

log.debug(“execJs js : ” + js);

IteratorEntryString, Object it = map.entrySet().iterator();

while (it.hasNext()) {

EntryString, Object entry = (EntryString, Object) it.next();

log.info(“EXECJS MAP : ” + entry.getKey() + “—” + entry.getValue());

}// end while

}// end if

if (“”.equals(js) || js == null) {

log.info(“EXECJS ERROR : JAVASCRIPT CONTENT IS NULL”);

} else if(map == null || map.size()=0){

log.info(“EXECJS ERROR : MAP CONTENT IS NULL”);

} else {

// 获取脚本引擎

ScriptEngineManager mgr = new ScriptEngineManager();

ScriptEngine engine = mgr.getEngineByName(“javascript”);

// 绑定数据

ScriptContext newContext = new SimpleScriptContext();

Bindings bind = newContext.getBindings(ScriptContext.ENGINE_SCOPE);

bind.putAll(map);

try {

engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);

engine.eval(js);

} catch (Exception e) {

log.info(“EXECJS EXCEPTION : EXECUTE JAVASCRIPT EXCEPTION”, e);

throw (e);

}// end try

}// end if

}

}

请问怎么写java调用node环境运行js代码?

nodejs 运行代码可以在命令行中使用命令“ node /path/xxx.js ”来执行

所以我们可以借助 java 的 Runtime 类,可以执行系统本地的命令, 例如:

Linux系统下:Runtime.getRuntime().exec(“node /path/xxx.js”);

Window系统下:Runtime.getRuntime().exec(“cmd /c node /path/xxx.js”);

当然推荐使用 Apache-Commons-Exec 工具类,可以屏蔽不同系统命令差异,并且获取结果更简单

工具类使用可以参考此文: 网页链接

原创文章,作者:JAOOH,如若转载,请注明出处:https://www.506064.com/n/130394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JAOOHJAOOH
上一篇 2024-10-03 23:28
下一篇 2024-10-03 23:28

相关推荐

  • JS Proxy(array)用法介绍

    JS Proxy(array)可以说是ES6中非常重要的一个特性,它可以代理一个数组,监听数据变化并进行拦截、处理。在实际开发中,使用Proxy(array)可以方便地实现数据的监…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Python3支持多行语句

    Python3是一种高级编程语言,开发人员可以轻松地使用该语言编写简单到复杂的代码。其中Python3支持多行语句,方便开发人员编写复杂的代码,提高代码的可读性和可维护性。 一、使…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29

发表回复

登录后才能评论