在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
如果只是单纯的抓取网站数据(包括登录以后),似乎都不需要解析内,执行js。如果是容ajax直接加一段httpGet,httpPost的头new BasicHeader("X-Requested-With", "XMLHttpRequest"),如果 如你问题所示必须执行js,试试htmlunit,它是jsoup + httpclient以及带有js解析器的结合体,本来是web测试用的框架
③ java 调用 js函数
function是属于javascript里面的抄语法,而<%%>里面调用袭的是java的语法,所以想要用<%%>调用alert()是不行了,因为他们不是同一个东西。
不知道你的意思是不是页面一加载就进行调用alert(),如果是这样的话,建议使用onload事件,表示页面加载的时候调用alert();
或者如果是点击的时候调用,那么久调用onclick()..总而言之可以使用事件完成。
④ java怎么调用node.js并传参比如怎么调用下面图片中的node.js方法
使用这个引入想要调用的Java类<%@page import"packge.classexa"%>
然后再声明这个类的对象,或者直接内调用静态方容法。
<%
classexa tclassexa = new classexa();
tclassexa.function();
%>
⑤ 怎么把JS嵌入到Java程序中
1.取得脚本解释器的管理器Manager
2.从管理器中取得js的解释器实例ScriptEngine
3.取得存储javascript变量的Bindings实例
4.把一个.io.Reader流及Bindings传递给ScriptEngine的eval方法返回脚本运行结果,如果执行中发生错误,会抛出ScriptException异常。
例:运行javascript脚本的一个java程序
throwsIOException{=newScriptEngineManager;//从管理器中获取js的解释器//定义我们要运行的脚本文件Stringfilename=null;//通过解释器来获得存储javascript变量的Bindings的实例,使它们提供给脚本。Bindingsbindings=js.createBindings;//在map中获取和设置值的方法publicObjectget;//使用我们的name/value对(即javascript变量)Bindingsbindings=newSimpleBindings(defaults);//创建一个变量,用于存放脚本执行的内容ScriptContextcontext=newSimpleScriptContext();//设置那些Bindings在Context中,使它们可读。但这样的变量定义的脚本不要放入我们的Map中context.setBindings(bindings,ScriptContext.GLOBAL_SCOPE);BufferedReaderin=newBufferedReader(newFileReader(filename));Stringline;while((line=in.readLine())!=null){line=line.trim();if(line.length()==0)continue;//跳过空行if(line.charAt(0)==‘#‘)continue;//跳过命令intpos=line.indexOf(":");if(pos==-1){("syntax:"+line);}Stringname=line.substring(0,pos).trim();Stringvalue=line.substring(pos+1).trim();charfirstchar=value.charAt(0);intlen=value.length();charlastchar=value.charAt(len-1);if(firstchar==‘"‘&&lastchar==‘"‘){//双引号引用的值为字符串defaults.put(name,value.substring(1,len-1));}elseif(Character.isDigit(firstchar)){//如果开始是一个数字try{doubled=Double.parseDouble(value);defaults.put(name,value);}catch(NumberFormatExceptione){//没有数字,是一个stringdefaults.put(name,value);}}elseif("true".equals(value)){//处理布尔值defaults.put(name,Boolean.TRUE);}elseif("false".equals(value)){defaults.put(name,Boolean.FALSE);}elseif("null".equals(value)){//处理null值defaults.put(name,null);}elseif(firstchar==‘{‘&&lastchar==‘}‘){//如果值是在一对大括号之内,则执行javascript代码Stringscript=value.substring(1,len-1);Objectresult=engine.eval(script,context);defaults.put(name,result);}else{//其它情况,刚好是一个字符串defaults.put(name,value);}}}//一个简单的类的测试程序publicstaticvoidmain(String[]args)throwsIOException,ScriptException{Configurationdefaults=newConfiguration();defaults.load(args[0]);Set
⑥ js代码怎么用
js代码的使用方法:1、在HTML页面中直接嵌入js代码,代码如“”;2、通过链接外部的JavaScript文件。
js简介:
Javascript(JS)是一种脚本语言,主要用于Web。它用于增强HTML页面,通常可以嵌入HTML代码中。JavaScript是一种解释型语言。因此,它不需要编译。
JavaScript脚本语言的特点:
1、脚本语言JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。
2、基于对象JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
3、简单JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。
4、动态性JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。
5、跨平台性JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支持JavaScript脚本语言,目前JavaScript已被大多数的浏览器所支持。
总的来说,js是JavaScript的简称,是一种解释型的脚本语言。
JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言。
Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
JavaScript与Java的不同点:
Java代码必须编译才能执行,而JavaScript不需编译,只需浏览器解释执行。
Java和JavaScript虽然都可以在服务器与客户端执行,但Java多运行于服务器,而JavaScript多运行于客户端。
JavaScript使用的是松散型的数据类型,而Java则使用的是严谨的数据类型。
⑦ 以下是段js代码 如何用java来实现 提示:java 里 的 substr 与 substring 是完全不同的
这样就可以
---------------------------------------------------------------------------
public class StringTest {
public static void main(String[] args) {
String incoming_str = "0123456789";
String _loc4 = incoming_str.substring(0, incoming_str.length() - 2);
String _loc10 = incoming_str.substring(incoming_str.length() - 2);
System.out.println(_loc4);
System.out.println(_loc10);
}
}
⑧ java后台怎么调用前台js方法
可使用前来台js申请后台java代码,自把数据用返回值的方式,返回给前台。这种方式用的最多的就是使用ajax了。使用在后台与服务器进行少量数据交换,ajax可使网站实现异步更换。这意味着可在不重新加载整个网站的情况下,关于网站的某个部分进行更换。
⑨ java如何调用node.js啊
首先,要调用其它语言,java内部是提供了支持的,但是,更方便的版做法是使用apche-commons项目里的BSF提供的引擎权,透过它可以轻松调用其它语言。以下摘录自项目主页:
BSF 2.x supports several scripting languages currently:
Javascript (using Rhino ECMAScript, from the Mozilla project)
NetRexx (an extension of the IBM REXX scripting language in Java)
Commons JEXL
Python (using Jython)
Tcl (using Jacl)
XSLT Stylesheets (as a component of Apache XML project's Xalan and Xerces)