JAVA調用JS函數,java調用js
今天在開發中使用到了js和Java的互動,平時我們用的比較多的就是js調用Java的方法,可以使用dwr、Ajax、jquery。突然發現要Java調用js的話還真沒有見過,今天上網查詢了下資料,順便總結一下:
前提條件:jdk1.6才支援,1.6以前的就不行了。
js代碼如下:
function convert (id,str){if ('505041'==id){return str;}else{return "A";}}
Java代碼如下:
package com.sc;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;public class JsTest {public static void main(String[] args) throws Exception { testJSFile(); } private static void testJSFile() throws Exception { ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName("javascript"); engine.eval(readJSFile()); Invocable inv = (Invocable) engine; Object res = (Object) inv.invokeFunction("convert", new String[] { "5050412", "D" }); System.out.println("res:" + res); } private static String readJSFile() throws Exception { StringBuffer script = new StringBuffer(); File file = new File("E:\\workspace\\test4\\WebRoot\\test.js"); FileReader filereader = new FileReader(file); BufferedReader bufferreader = new BufferedReader(filereader); String tempString = null; while ((tempString = bufferreader.readLine()) != null) { script.append(tempString).append("\n"); } bufferreader.close(); filereader.close(); return script.toString(); }}
在Java類中直接run就可以得到如下結果:
res:A
以此記錄一下。
java 調用 js函數
function是屬於javascript裡面的文法,而<%%>裡面調用的是java的文法,所以想要用<%%>調用alert()是不行了,因為他們不是同一個東西。
不知道你的意思是不是頁面一載入就進行調用alert(),如果是這樣的話,建議使用onload事件,表示頁面載入的時候調用alert();
或者如果是點擊的時候調用,那麼久調用onclick()..總而言之可以使用事件完成。
java怎調用javascript的函數
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();
}
}