如何在javajava 调用js方法

有时候因为需要,我们想在java中调用js方法,不再是像页面中一个事件触发,该如何做到呢?今天下午没事得时候小研究了下,现跟大家分享一下。不对之处,望大家指正,共同进步!
* 加载脚本引擎,并在java中调用js方法
public void test2()
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String str="2&1";
Double d = (Double) engine.eval(str);
Integer i=d.intValue();
System.out.println(i);
} catch (ScriptException ex) {
ex.printStackTrace();
* 在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");
String script = "function say(){ return 'hello,'"+name+"; }";
se.eval(script);
Invocable inv2 = (Invocable)
String res=(String)inv2.invokeFunction("say",name);
System.out.println(res);
catch(Exception e)
e.printStackTrace();
* 演示如何将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);
engine.eval("println('path:'+f.getPath())");//无法使用alert方法
} catch (ScriptException e) {
e.printStackTrace();
* 演示如何在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)
Runnable r=inv.getInterface(obj,Runnable.class);
Thread t=new Thread(r);
t.start();
这样java就可以执行动态语言了,不过注意是jdk1.6版本的哦~
阅读(...) 评论() &【java】js、java获取URL请求路径信息 - 你是我的信仰 - ITeye博客
博客分类:
有时候,我们需要对请求路径做处理,例如url重定向,或者为url追加参数,我们可以使用js在前端对请求路径做处理, 也可以使用java在后端对请求路径做处理。
js获取请求路径信息
js有个全局变量location,操作这个对象就等于操作浏览器的地址栏,下面我们观察一下location对象可以获取到什么url信息
//测试的请求url, get方法
//"http://localhost:8080/struts2/user/login.action?userid=1000#topic1"
//获取请求协议
//返回"http:"
//获取请求服务器域名(IP地址),
//返回"localhost"
//获取请求服务器端口号
//返回"8080"
//获取请求服务器的域名(IP地址)和端口号
//返回"localhost:8080"
//获取请求资源名
//返回"/struts2/user/login.action"
//获取锚点
//返回"#topic1"
//获取请求参数
//返回?userid=1000", 注意: 如果请求地址只有"?"后面却没有请求参数, 则返回空字符串
//返回整个url地址, 包含以上所有信息
//返回"http://localhost:8080/struts2/user/login.action#topic1?userid=1000#topic1"
java获取请求路径信息
开发javaweb项目时,
需要web容器,
例如tomcat是一个常用的javaweb容器, 该容器会为我们的servlet(假如没有使用mvc框架, 如struts2、springmvc)提供一个HttpServletRequest对象, 通过访问该对象, 我们可以获取到请求路径信息, 示例如下:
//测试的请求url, get方法
//"http://localhost:8080/struts2/user/login.action?userid=1000"
//获取请求方法
request.getMethod();
//返回"GET"
//获取请求协议
request.getScheme();
//返回"http"
//获取请求域名(IP地址);
request.getServerName();
//返回"localhost"
//获取请求端口号
request.getServerPort();
//返回"8080"
//获取请求URL, 不包括请求参数
request.getRequestURL();
//返回"http://localhost:8080/struts2/user/login.action"
//获取请求URI, 也不包括请求参数, 相当于contextPath + servletPath
request.getRequestURI();
//返回"/struts2/user/login.action"
//获取请求参数, 不带问号"?"
request.getQueryString();
//返回"userid=1000"
//获取请求协议
request.getProtocol();
//返回"HTTP/1.1"
//获取Web应用程序路径
request.getContextPath();
//返回"/struts2"
//获取请求资源路径
request.getServletPath();
//返回"/user/login.action"
lizhuquan0769
浏览: 13153 次java调用js方法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
java调用js方法
&&最近在研究这一块,共同进步
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢966,690 七月 独立访问用户
语言 & 开发
架构 & 设计
文化 & 方法
您目前处于:
Nashorn——在JDK 8中融合Java与JavaScript之力
Nashorn——在JDK 8中融合Java与JavaScript之力
日. 估计阅读时间:
智能化运维、Serverless、DevOps......2017年有哪些最新运维技术趋势?!
相关厂商内容
相关赞助商
CNUTCon全球运维技术大会,9月10日-9月11日,上海&光大会展中心大酒店,
由于Nashorn随JDK 8而来,它还增加了简洁的支持。接下来,我们很快就会看到更多细节。
让我们从一个小例子开始。首先,你可能需要安装JDK 8和NetBeans、IntelliJ IDEA或者Eclipse。对于集成JavaScript开发,它们都至少提供了基本的支持。让我们创建一个简单的Java项目,其中包含下面两个示例文件,并运行它:
(点击图片可以查看大图)
在第12行,我们使用引擎的&eval&方法对任意JavaScript代码求值。在本示例中,我们只是加载了上面的JavaScript文件并对其求值。你可能会发现那个&print&并不熟悉。它不是JavaScript的内建函数,。你也可以将 &hello world&的打印代码直接嵌入到传递给&eval&方法的字符串,但将JavaScript放在它自己的文件中为其开启了全新的工具世界。
Eclipse目前还没有对Nashorn提供专门的支持,不过,通过(JSDT)项目,它已经支持JavaScript的基本工具和编辑。
(点击图片可以查看大图)
13.1(社区版和旗舰版)提供了出色的JavaScript和支持。它有一个全功能的调试器,甚至允许在Java和JavaScript之间保持重构同步,因此举例来说,如果你重命名一个被JavaScript引用的Java类,或者重命名一个用于Java源代码中的JavaScript文件,那么该IDE将跨语言修改相应的引用。
下面是一个例子,展示如何调试从Java调用的JavaScript(请注意,NetBeans也提供了JavaScript调试器,如下截图所示):
(点击图片可以查看大图)
你可能会说,工具看上去不错,而且新实现修复了性能以及一致性问题,但我为什么应该用它呢?一个原因是一般的脚本编写。有时候,能够直接插入任何类型的字符串,并任由它被解释,会很方便。有时候,没有碍事的编译器,或者不用为静态类型担心,可能也是不错的。或者,你可能对Node.js编程模型感兴趣,它也可以和Java一起使用,在本文的末尾我们会看到。另外,还有个不得不提一下,与Java相比,使用JavaScript进行JavaFX开发会快很多。
Nashorn引擎可以使用命令从命令行调用。你可以不带任何参数调用它,这会将你带入一个交互模式,或者你可以传递一个希望执行的JavaScript文件名,或者你可以用它作为shell脚本的替代,像这样:
#!/usr/bin/env jjs
var name = $ARG[0];
print(name ? &Hello, ${name}!& : &Hello, world!&);
向jjs传递程序参数,需要加&&&前缀。因此举例来说,你可以这样调用:
./hello-script.js & Joe
如果没有&&&前缀,参数会被解释为文件名。
向Java传递数据或者从Java传出数据
正如上文所说的那样,你可以从Java代码直接调用JavaScript;只需获取一个引擎对象并调用它的&eval&方法。你可以将数据作为字符串显式传递&&
ScriptEngineManager scriptEngineManager =
new ScriptEngineManager();
ScriptEngine nashorn =
scriptEngineManager.getEngineByName(&nashorn&);
String name = &Olli&;
nashorn.eval(&print('& + name + &')&);
&&或者你可以在Java中传递绑定,它们是可以从JavaScript引擎内部访问的全局变量:
int valueIn = 10;
SimpleBindings simpleBindings = new SimpleBindings();
simpleBindings.put(&globalValue&, valueIn);
nashorn.eval(&print (globalValue)&, simpleBindings);
JavaScript eval的求值结果将会从引擎的&eval&方法返回:
Integer result = (Integer) nashorn.eval(&1 + 2&);
assert(result == 3);
在Nashorn中使用Java类
前面已经提到,Nashorn最强大的功能之一源于在JavaScript中调用Java类。你不仅能够访问类并创建实例,你还可以继承他们,调用他们的静态方法,几乎可以做任何你能在Java中做的事。
作为一个例子,让我们看下来龙去脉。JavaScript没有任何语言特性是面向并发的,所有常见的运行时环境都是单线程的,或者至少没有任何共享状态。有趣的是,在Nashorn环境中,JavaScript确实可以并发运行,并且有共享状态,就像在Java中一样:
// 访问Java类Thread
var Thread = Java.type(&java.lang.Thread&);
// 带有run方法的子类
var MyThread = Java.extend(Thread, {
run: function() {
print(&Run in separate thread&);
var th = new MyThread();
th.start();
th.join();
请注意,从Nashorn访问类的规范做法是使用Java.type,并且可以使用Java.extend扩展一个类。
令人高兴的函数式
从各方面来说,随着JDK 8的发布,Java&&至少在某种程度上&&已经变成一种。开发人员可以在集合上使用高阶函数,比如,遍历所有的元素。高阶函数是把另一个函数当作参数的函数,它可以用这个函数参数做些有意义的事情。请看下面Java中高阶函数的示例:
List&Integer& list = Arrays.asList(3, 4, 1, 2);
list.forEach(new Consumer() {
public void accept(Object o) {
System.out.println(o);
对于这个例子,我们的传统实现方式是使用一个&外部&循环遍历元素,但现在,我们没有那样做,而是将一个&Consumer&函数传递给了&forEach&操作,一个高阶的&内部循环&操作会将集合中的每个元素一个一个地传递给Consumer的&accept&方法并执行它。
如上所述,对于这样的高阶函数,函数式语言的做法是接收一个函数参数,而不是一个对象。虽然在传统上讲,传递函数引用本身超出了Java的范围,但现在,JDK 8有一些语法糖,使它可以使用Lambda表达式(又称为&闭包&)来实现那种表示方式。例如:
List&Integer& list = Arrays.asList(3, 4, 1, 2);
list.forEach(el -& System.out.println(el));
在这种情况下,&forEach&的参数是这样一个函数引用的形式。这是可行的,因为Customer是一个函数式接口(有时称为&单一抽象方法(Single Abstract Method)&类型或&SAM&)。
那么,我们为什么要在讨论Nashorn时谈论Lambda表达式呢?因为在JavaScript中,开发人员也可以这样编写代码,而在这种情况下,Nashorn可以特别好地缩小Java和JavaScript之间的差距。尤其是,它甚至允许开发人员将纯JavaScript函数作为函数式接口(SAM类型)的实现来传递。
让我们来看一些纯JavaScript代码,它们与上述Java代码实现一样的功能。注意,在JavaScript中没有内置的列表类型,只有数组;不过这些数组的大小是动态分配的,而且有与Java列表类似的方法。因此,在这个例子中,我们调用一个JavaScript数组的&for Each&方法:
var jsArray = [4,1,3,2];
jsArray.forEach(function(el) { print(el) } );
相似之处显而易见;但那还不是全部。开发人员还可以将这样一个JavaScript数组转换成一个Java列表:
var list = java.util.Arrays.asList(jsArray);
看见了吗?是的,这就是在Nashorn中运行的JavaScript。既然它现在是一个Java列表,那么开发人员就可以调用其&forEach&方法。注意,这个&forEach&方法不同于我们在JavaScript数组上调用的那个,它是定义在java集合上的&forEach&方法。这里,我们仍然传递一个纯JavaScript函数:
list.forEach(function(el) { print(el) } );
Nashorn允许开发人员在需要使用函数式接口(SAM类型)的地方提供纯JavaScript函数引用。这不仅适应于Java,也适应于JavaScript。
ECMAScript的下一个版本&&预计是今年的最后一个版本&&将包含函数的短语法,允许开发人员将函数写成近似Java Lambda表达式的形式,只不过它使用双箭头=&。这进一步增强了一致性。
Nashorn JavaScript特有的方言
正如简介部分所提到的那样,Nashorn支持的JavaScript实现了。我并不建议使用这些扩展,因为它们既不是Java,也不是JavaScript,两类开发人员都会觉得它不正常。另一方面,有两个扩展在整个Oracle文档中被大量使用,因此,我们应该了解它们。首先,让我们为了解第一个扩展做些准备。正如前文所述,开发人员可以使用Java.extend从JavaScript中扩展一个Java类。如果需要继承一个抽象Java类或者实现一个接口,那么可以使用一种更简便的语法。在这种情况下,开发人员实际上可以调用抽象类或接口的构造函数,并传入一个描述方法实现的JavaScript对象常量。这种常量不过是name/value对,你可能了解JSON格式,这与那个类似。这使我们可以像下面这样实现Runnable接口:
var r = new java.lang.Runnable({
run: function() {
print(&running...\n&);
在这个例子中,一个对象常量指定了run方法的实现,我们实际上是用它调用了Runnable的构造函数。注意,这是Nashorn的实现提供给我们的一种方式,否则,我们无法在JavaScript这样做。
示例代码已经与我们在Java中以匿名内部类实现接口的方式类似了,但还不完全一样。这将我们带到了第一个扩展,它允许开发人员在调用构造函数时在右括号&)&后面传递最后一个参数。这种做法的代码如下:
var r = new java.lang.Runnable() {
run: function() {
print(&running...\n&);
&&它实现了完全相同的功能,但更像Java。
第二个常用的扩展一种函数的简便写法,它允许删除单行函数方法体中的两个花括号以及return语句。这样,上一节中的例子:
list.forEach(function(el) { print(el) } );
可以表达的更简洁一些:
list.forEach(function(el) print(el));
我们已经看到,有了Nashorn,我们就有了一个嵌入到Java的优秀的JavaScript引擎。我们也已经看到,我们可以从Nashorn访问任意Java类。更进一步,它&为Java平台带来了Node编程模型、API和模块生态系统&。要了解这意味着什么以及它为什么令人振奋,我们首先必须了解是什么。从根本上说,Node是将Chrome的V8 JavaScript引擎剥离出来,使它可以从命令行运行,而不再需要浏览器。这样,JavaScript就不是只能在浏览器中运行了,而且可以在服务器端运行。在服务器端以任何有意义的方式运行JavaScript都至少需要访问文件系统和网络。为了做到这一点,Node内嵌了一个名为的库,以异步方式实现该项功能。实际上,这意味着操作系统调用永远不会阻塞,即使它过一段时间才能返回。开发人员需要提供一个回调函数代替阻塞。该函数会在调用完成时立即触发,如果有任何结果就返回。
有若干公司都在重要的应用程序中使用了Node,其中包括和。
让我们来看一个JavaScript的小例子,它是我根据上的例子改写而来:
//加载&http&模块(这是阻塞的)来处理http请求
var http = require('http');
//当有请求时,返回&Hello,World\n&
function handleRequest(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello, World\n');
//监听localhost,端口1337
//并提供回调函数handleRequest
//这里体现了其非阻塞/异步特性
http.createServer(handleRequest).listen(1337, '127.0.0.1');
//记录到控制台,确保我们在沿着正确的方向前进
console.log('Get your hello at http://127.0.0.1:1337/');
要运行这段代码,需要安装Node,然后将上述JavaScript代码保存到一个文件中。最后,将该文件作为一个参数调用Node。
将libuv绑定到Java类,并使JavaScript可以访问它们,Avatar.js旨在以这种方式提供与Node相同的核心API。虽然这可能听上去很繁琐,但这种方法很有效。Avatar.js支持许多Node模块。对Node主流Web框架&&的支持表明,这种方式确实适用于许多现有的项目。
令人遗憾的是,在写这篇文章的时候,还没有一个Avatar.js的二进制分发包。有一个说明了如何从源代码进行构建,但是如果真没有那么多时间从头开始构建,那么也可以从下载二进制文件而不是自行构建。两种方式都可以,但为了更快的得到结果,我建议选择第二种方式。
一旦创建了二进制文件并放进了lib文件夹,就可以使用下面这样的语句调用Avatar.js框架:
java -Djava.library.path=lib -jar lib/avatar-js.jar helloWorld.js
假设演示服务器(上述代码)保存到了一个名为&helloWorld.js&的文件中。
让我们再问一次,这为什么有用?Oracle的专家()指出了该库的几个适用场景。我对其中的两点持大致相同的看法,即:
有一个Node应用程序,并希望使用某个Java库作为Node API的补充
希望切换到JavaScript和Node API,但需要将遗留的Java代码部分或全部嵌入
两个应用场景都可以通过使用Avatar.js并从JavaScript代码中调用任何需要的Java类来实现。我们已经看到,Nashorn支持这种做法。
下面我将举一个第一个应用场景的例子。JavaScript目前只有一种表示数值的类型,名为&number&。这相当于Java的&double&精度,并且有同样的限制。JavaScript的number,像Java的double一样,并不能表示任意的范围和精度,比如在计量货币时。
在Java中,我们可以使用BigDecimal,它正是用于此类情况。但JavaScript没有内置与此等效的类型,因此,我们就可以直接从JavaScript代码中访问BigDecimal类,安全地处理货币值。
让我们看一个Web服务示例,它计算某个数量的百分之几是多少。首先,需要有一个函数执行实际的计算:
var BigDecimal = Java.type('java.math.BigDecimal');
function calculatePercentage(amount, percentage) {
var result = new BigDecimal(amount).multiply(
new BigDecimal(percentage)).divide(
new BigDecimal(&100&), 2, BigDecimal.ROUND_HALF_EVEN);
return result.toPlainString();
JavaScript没有类型声明,除此之外,上述代码与我针对该任务编写的Java代码非常像:
public static String calculate(String amount, String percentage) {
BigDecimal result = new BigDecimal(amount).multiply(
new BigDecimal(percentage)).divide(
new BigDecimal(&100&), 2, BigDecimal.ROUND_HALF_EVEN);
return result.toPlainString();
我们只需要替换上文Node示例中的handleRequest函数就可以完成代码。替换后的代码如下:
//加载工具模块&url&来解析url
var url = require('url');
function handleRequest(req, res) {
// '/calculate' Web服务地址
if (url.parse(req.url).pathname === '/calculate') {
var query = url.parse(req.url, true).
//数量和百分比作为查询参数传入
var result = calculatePercentage(query.amount,
query.percentage);
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(result + '\n');
我们又使用了Node核心模块来处理请求URL,从中解析出查询参数amount和percentage。
当启动服务器(如前所述)并使用浏览器发出下面这样一个请求时,
http://localhost:1337/calculate?
amount=13&percentage=7.59
就会得到正确的结果&8.73&。这在单纯使用JavaScript的&number&类型时是不可能。
当你决定将现有的JEE应用程序迁移到JavaScript和Node时,第二个应用场景就有意义了。在这种情况下,你很容易就可以从JavaScript代码内访问现有的所有服务。另一个相关的应用场景是,在使用JavaScript和Node构建新的服务器功能时,仍然可以受益于现有的JEE服务。
此外,基于Avatar.js的也朝着相同的方向发展。该项目的详细信息超出了本文的讨论范围,但读者可以阅读做一个粗略的了解。该项目的基本思想是,用JavaScript编写应用程序,并访问JEE服务。Avatar项目包含Avatar.js的一个二进制分发包,但它需要Glassfish用于安装和开发。
Nashorn项目增强了JDK 6中原有的Rhino实现,极大地提升了运行时间较长的应用程序的性能,例如用在Web服务器中的时候。Nashorn将Java与JavaScript集成,甚至还考虑了JDK 8的新Lambda表达式。Avatar.js带来了真正的创新,它基于这些特性构建,并提供了企业级Java与JavaScript代码的集成,同时在很大程度上与JavaScript服务器端编程事实上的标准兼容。
完整实例以及用于Mac OS X的Avatar.js二进制文件可以从上下载。
Oliver Zeigermann是一名来自德国汉堡的自由软件架构师/开发人员、顾问和教练。目前,他致力于在企业应用程序中使用JavaScript。
查看英文原文:
Author Contacted
告诉我们您的想法
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
赞助商链接
InfoQ每周精要
订阅InfoQ每周精要,加入拥有25万多名资深开发者的庞大技术社区。
架构 & 设计
文化 & 方法
<及所有内容,版权所有 &#169;
C4Media Inc.
服务器由 提供, 我们最信赖的ISP伙伴。
北京创新网媒广告有限公司
京ICP备号-7
找回密码....
InfoQ账号使用的E-mail
关注你最喜爱的话题和作者
快速浏览网站内你所感兴趣话题的精选内容。
内容自由定制
选择想要阅读的主题和喜爱的作者定制自己的新闻源。
设置通知机制以获取内容更新对您而言是否重要
注意:如果要修改您的邮箱,我们将会发送确认邮件到您原来的邮箱。
使用现有的公司名称
修改公司名称为:
公司性质:
使用现有的公司性质
修改公司性质为:
使用现有的公司规模
修改公司规模为:
使用现在的国家
使用现在的省份
Subscribe to our newsletter?
Subscribe to our industry email notices?
我们发现您在使用ad blocker。
我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。java程序执行js脚本 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 8时,
&无详细内容&
代码片段(2)
1.&[代码]java程序执行js脚本&&&&
public class ExecJs {
* 记录日志类
private Logger log = Logger.getLogger(ExecJs.class);
* 后置处理,执行js脚本
* @param js
* @throws Exception
public void execJs(String js, Map&String,Object& map) throws Exception {
if (log.isDebugEnabled()) {
log.debug("execJs js : " + js);
Iterator&Entry&String, Object&& it = map.entrySet().iterator();
while (it.hasNext()) {
Entry&String, Object& entry = (Entry&String, Object&) it.next();
("EXECJS MAP : " + entry.getKey() + "---" + entry.getValue());
}// end while
}// end if
if ("".equals(js) || js == null) {
("EXECJS ERROR : JAVASCRIPT CONTENT IS NULL");
} else if(map == null || map.size()&=0){
("EXECJS ERROR : MAP CONTENT IS NULL");
// 获取脚本引擎
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("javascript");
// 绑定数据
ScriptContext newContext = new SimpleScriptContext();
Bindings bind = newContext.getBindings(ScriptContext.ENGINE_SCOPE);
bind.putAll(map);
engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);
engine.eval(js);
} catch (Exception e) {
("EXECJS EXCEPTION : EXECUTE JAVASCRIPT EXCEPTION", e);
throw (e);
}// end try
}// end if
java脚本语言程序.rar&~&286KB&&&&
开源中国-程序员在线工具:
自己顶一下
2楼:rjzou 发表于
这样的使用在什么场景?
3楼:Yaoubong 发表于
ScriptEngineManager从哪里引用?&
4楼:南北024 发表于
引用来自“Yaoubong”的评论ScriptEngineManager从哪里引用?&ScriptEngineManager jdk1.6 自带的js引擎
5楼:南北024 发表于
引用来自“Yaoubong”的评论ScriptEngineManager从哪里引用?&我们项目中用在数据的后置处理
6楼:南北024 发表于
引用来自“Yaoubong”的评论ScriptEngineManager从哪里引用?&import javax.script.Bimport javax.script.ScriptCimport javax.script.ScriptEimport javax.script.ScriptEngineMimport javax.script.SimpleScriptC
7楼:未央 发表于
这个关注下,以后开发个网络抢拍器什么的多方便。现在的网站都是AJAX,没有JAVASCRIPT打开都是一片空白,对用户不够友好啊。
8楼:axhack 发表于
这个必须顶,采集js脚本的网站用处很大的。
9楼:唯一 发表于
10楼:唯一 发表于
执行的时候怎么传参,js 怎么传,map怎么传
11楼:南北024 发表于
引用来自“唯一”的评论执行的时候怎么传参,js 怎么传,map怎么传js 就是要执行的js脚本,map
是参数,就允许js脚本中用动态的参数 处理map中的值
12楼:唯一 发表于
我js写的&alert(a);&& map={a=&bb&}; result null
13楼:南北024 发表于
引用来自“唯一”的评论我js写的&alert(a);&& map={a=&bb&}; result null
boolean flag =
String js = &var a = 1; var b = a + aKprintln(b);&;
Map&String,Object& map = new HashMap&String,Object&();
map.put(&aKey&, &aValue&);
flag = execJs.execJs(js, map);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
14楼:唯一 发表于
引用来自“wangjianghuan”的评论引用来自“唯一”的评论我js写的&alert(a);&& map={a=&bb&}; result null
boolean flag =
String js = &var a = 1; var b = a + aKprintln(b);&;
Map&String,Object& map = new HashMap&String,Object&();
map.put(&aKey&, &aValue&);
flag = execJs.execJs(js, map);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}楼主早该如此啊,哈哈
15楼:唯一 发表于
楼主的例子明明是void类型的,demo怎么又返回个boolean,呵呵,自相矛盾
16楼:南北024 发表于
引用来自“唯一”的评论楼主的例子明明是void类型的,demo怎么又返回个boolean,呵呵,自相矛盾后来改造了,执行完了你得告诉人家执行的怎么样了啊,就改了,不抛异常就返回true
17楼:唯一 发表于
引用来自“wangjianghuan”的评论引用来自“唯一”的评论楼主的例子明明是void类型的,demo怎么又返回个boolean,呵呵,自相矛盾后来改造了,执行完了你得告诉人家执行的怎么样了啊,就改了,不抛异常就返回true其实返回个什么并不重要,自己改改就行了,我想知道为什么alert()不能执行呢,这个跟真正的js环境有什么相同点跟不同点吗
18楼:sg_lt 发表于
分享一下 学习了&
19楼:南北024 发表于
引用来自“唯一”的评论引用来自“wangjianghuan”的评论引用来自“唯一”的评论楼主的例子明明是void类型的,demo怎么又返回个boolean,呵呵,自相矛盾后来改造了,执行完了你得告诉人家执行的怎么样了啊,就改了,不抛异常就返回true其实返回个什么并不重要,自己改改就行了,我想知道为什么alert()不能执行呢,这个跟真正的js环境有什么相同点跟不同点吗我也试alert 不行,具体的我也没搞太清楚,只是用了一下,要深入研究的话,在网上搜索一下吧
开源从代码分享开始
南北024的其它代码

我要回帖

更多关于 js 调用java代码 的文章

 

随机推荐