java 调用javascript
首先我们在D盘的根目录下有一个js文件 名叫 common.js 假设里面有一个这样的方法
/**
* @param int
* _number 你想要的最大值
* @param boolean
* 是否从0开始
* @param int
* 需要选择个数
* @param boolean是否可以有重复值
* @return String 如_radom(33,false,6,false)返回值可能是 5 22 33 12 7 9
*/
function __random(_number, isStartBy0, _nums, theSame) {
var nums = [];
var count = nums.length;
var str = "";
var flag = false;
for ( var i = 0; i < _nums; i++) {
if (isStartBy0)
var idx = Math.floor(Math.random() * (_number + 1));
else
var idx = Math.floor(Math.random() * _number + 1);
// 1 / 0 - _number
if (theSame) {
nums[nums.length] = idx;
str += nums[i] + " ";
} else {
if (nums.length == 0) {
nums[0] = idx;
str += nums[0] + " ";
} else {
for ( var j = 0; j < nums.length; j++) {
if (idx == nums[j]) {
flag = true;
i = nums.length - 1;
break;
}
}
if (!flag) {
nums[i] = idx;
str += nums[i] + " ";
}
}
flag = false;
}
}
return str;
}
如果我们需要在java中调用这段代码
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class TestScript {
public static void main(String[] args) throws Exception {
// 创建一个 ScriptEngineManager
ScriptEngineManager m = new ScriptEngineManager();
// 得到javascript引擎
ScriptEngine engine = m.getEngineByName("js");
// 绑定引擎
engine.put("engine", engine);
// 执行script代码 调用下面的方法
TestScript.eval(engine, "d://common.js");
}
private static void eval(ScriptEngine engine, String name) throws Exception {
// InputStream is = TestScript.class.getResourceAsStream("/resources/" +
// name);
InputStream is = new FileInputStream(name);
// 这一句是为了更好的错误消息输出
// engine.put(ScriptEngine.NAME, name);
// 执行io流中的javascript代码
engine.eval(new InputStreamReader(is));
Invocable inv = (Invocable) engine;
// 执行方法并传递参数
// _number, isStartBy0, _nums, theSame
Object[] c = { 33, false, 6, false };
Object obj = inv.invokeFunction("__random", c);
// 打印结果
System.out.println(obj);
}
}
java 调用javascript的更多相关文章
- Java调用Javascript、Python算法总结
最近项目中经常需要将Javascript或者Python中的算法发布为服务,而发布Tomcat服务则需要在Java中调用这些算法,因此就不免要进行跨语言调用,即在Java程序中调用这些算法. 不管是调 ...
- [转]Java调用Javascript、Python算法总结
最近项目中经常需要将Javascript或者Python中的算法发布为服务,而发布Tomcat服务则需要在Java中调用这些算法,因此就不免要进行跨语言调用,即在Java程序中调用这些算法. 不管是调 ...
- Java 调用 Javascript 函数的范例
在Java 7 以后,可以在Java代码中调用javascript中的函数,请看下面的例子: package com.lee; import java.io.FileNotFoundException ...
- Selenium+java - 调用JavaScript操作
前言 在做web自动化时,有些情况selenium的api无法完成,需要通过第三方手段比如js来完成实现,比如去改变某些元素对象的属性或者进行一些特殊的操作,本文将来讲解怎样来调用JavaScript ...
- Java调用JavaScript
1.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...
- 从Java 调用JavaScript
篇幅过长 下载资源链接https://www.slidestalk.com/s/java_javascript_5hl09w
- WebView上实现Java与JavaScript交互
在安卓开发上,考虑到开发效率和界面更新,有时使用WebView结合web页面技术,可以快速迭代地开发移动应用.WebView加载资源的速度并不慢,但是如果资源多了,就很慢.图片.css.js.html ...
- Android-WebView与本地HTML (Java调用--->HTML的方法)
上一篇博客 Android-WebView与本地HTML (HTML调用-->Java的方法) 介绍了 JavaScript 调用--> Java中的方法,而此篇博客是介绍 Java 调用 ...
- JAVA调用操作javascript (JS)工具类
import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import ...
随机推荐
- 一些常用的centos命令,记忆下,属于常用的
一些常用的centos命令,记忆下,属于常用的 查询内网IP hostname -I 查询外网IP curl ifconfig.me 查看硬盘使用情况 df -h 查看系统资源使用率 top 查看系统 ...
- JQueryDOM节点操作
你一.JQueryDom节点操作 2.1查找节点 获取p节点 var $pDm=$("p"); 输出p节点的title属性 alert($pDm.attr("title& ...
- Rhythmk 一步一步学 JAVA (14) Spring-3 @Autowired,@Qualifier @Required @Resource @Component,@Service,@Controller,@Repository @PostConstruct,@PreDestroy
1.@Autowired 注解:首先在使用时候需要引入配置: <!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 --> ...
- Spring与Redis的实现
前言 Redis作为缓存还是相当不错的,一定程度上缓解了数据库的IO操作,具体不多说,具体网上查找资料. 实战 不多说,直接上代码. 第一步:所需要的依赖 <!-- redis --> & ...
- 批处理文件中获取当前所在路径的几种方法,以及写文件到txt
@echo off setlocal EnableDelayedExpansion echo 当前正在运行的批处理文件所在路径:!cd! pause @echo off echo 当前目录是:%cd% ...
- 拼接两个yuv合帧
http://blog.csdn.net/huahuahailang/article/details/9040847 /**************************************** ...
- 【310】◀▶ Python 日期和时间
参考: python 时间日期计算 Python 日期和时间(菜鸟教程) 8.1. datetime — Basic date and time types python中datetime模块中dat ...
- Java中instanceof和isInstance的具体区别
Java中instanceof和isInstance的具体区别 在Think in Java泛型这一章遇到这个问题,一些博客模糊提到了isInstance是instanceof的动态实现,查阅文档参考 ...
- svn 的限制
*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store *.exe *. ...
- Phong Shading
[Phong Shading] The most serious problem with Gouraud shading occurs when specular highlights are fo ...