java执行js
❶ java 调用 js函数
function是属于javascript里面的语法,而<%%>里面调用的是java的语法,所以想要用<%%>调用alert()是不行了,因为他们不是同一个东西。
不知道你的意思是不是页面一加载就进行调用alert(),如果是这样的话,建议使用onload事件,表示页面加载的时候调用alert();
或者如果是点击的时候调用,那么久调用onclick()..总而言之可以使用事件完成。
❷ java调用请求页面js方法有哪些
其实网上有很多方法
/** 加载脚本引擎,并在java中调用js方法 */
public void test2(){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try {
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");
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中对象作为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中如何通过线程来启动一个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的时候调用node环境运行js代码
不知道你的具体需求是什么,java如果是用来做网页开发的话,本身项目就可以运行JS的,不需要调用 nodeJs 环境,而如果说是希望 java + nodeJs 的架构,那应该是一边提供接口,另一边发送请求的方式,也不需要说通过 java来调用 nodeJs 。
所以还是需要知道你具体的需求是什么。
❹ js文件怎么运行
1、浏览器控制台运行
JavaScript不同于java语言或者c语言,需要环境、需要编译再运行,js在被制造出来时,就是为浏览器而生,可以直接在浏览器里运行,这里以谷歌浏览器为例,鼠标右键检查或者快捷键F12即可看到控制台可以理解为操作系统里的命令行模式
看上去是好一点了,可以单独执行文件了,但是这样还是很蠢,每回打开cmd还要找到js的路径
3、插件(我这里用的IDEA)
❺ 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, 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();
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
}
}
❻ jsp 中java代码怎么直接获取js里的变量
jsp里的java代码是在服务器上执行的,而js是在客户端执行的。执行顺序是先进行java执行后发给客户端再运行js,所以同一个页面里的java代码是获取不到js变量的,那个时候js都还没执行,js内存都没分配呢,就不会js变量的。
❼ java如何调用javascript的函数
[java] view plainprint?
<span style="font-size:18px;">package suggestion16;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class ScriptText {
public static void main(String[] args) throws FileNotFoundException, ScriptException, Exception {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
Bindings bind = engine.createBindings();
bind.put("factor", 2); //这里绑定一个factor的值为2.
engine.setBindings(bind,ScriptContext.ENGINE_SCOPE);
Scanner input = new Scanner(System.in);
while(input.hasNext())
{
int first = input.nextInt();
int sec = input.nextInt();
System.out.println("输入的参数为:"+ first+ " , " + sec);
engine.eval(new FileReader("E:/cal.js"));
if(engine instanceof Invocable)
{
Invocable in = (Invocable)engine;
Double result = (Double)in.invokeFunction("cal",first,sec);
System.out.println("运算结果为:" + result.intValue());
}
}
}
}
</span>
其中的“E:/cal.js”就是我们js文件的保存路径。并且这个主函数可以循环的输入。
我们运行一下这个程序得到的结果如下:
[html] view plainprint?
<span style="font-size:18px;">1
2
输入的参数为:1 , 2
运算结果为:1
</span>
上面也就是 调用了 1 + 2 - 2 = 1 ,所以结果为1
我们将js文件中的function方法改变下,改编为下面的函数:
[javascript] view plainprint?
<span style="font-size:18px;">function cal(var1,var2)
{
return var1+var2*factor;
}</span>