js与java是不同语言,运行在不同环境下,因此无法直接获得对方数据。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的仁布网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
java运行在服务器端,在同一个jsp文件中,java先运行,js后运行,java可以生成一段js代码,保证js运行得到相应的结果,因此可以用java定义js变量的方式来传递数据,例如:
script
var url="%=url%";
alert(username);
/script
上面例子,%%中的内容会在服务器端运行,在“”中间输出网址,浏览器就会加载下面的结果:
script
var url="gif8.cn";
alert(url);
/script
这部分就是标准的js代码了。
js是在前端运行的(浏览器),java是后台运行的(服务器)。不存在在js中嵌入java语句,楼上的回复应该说是在java中嵌入js内容,因为服务器会把jsp中的java代码块先执行了,生成和其他html或js的代码组合后的内容再发送给浏览器解析。所以应该理解为在java(jsp也可以理解为特殊的java类)中嵌入js代码。或者你可以去了解下ajax或许可以给你新的启发
jsp中可以将java,js,htm糅合在一起,这是一种用法,另外如果你用过servlet,就会知道本身servlet调用输出方法可以生成HTML,那也是可以用js代码的。
1.通过AJAX用JS访问JAVA中的某个方法,然后在JAVA代码中将JS代码放到response的输出流中,然后eval()返回的JS代码。
2.JSP中可以嵌入java代码块,比如在jsp页面中写如下代码:
script
%if(a==1){%
alert("abc");
%}%
/script
这样页面在加载的时候就会先执行JAVA代码,如果a==1了 alert("abc")这句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
方法一:file --》 new file-- 输入javascript 【出现javascript 一个是项目 一个是file】--》直接选择javascript 文件就可以了
方法2:右击新建file 后缀名改成js 就可以了