在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
//java調用js腳本的例子
=newScriptEngineManager();
ScriptEnginejsEngine=scriptEngineMgr.getEngineByName("JavaScript");
StringBuffersb=newStringBuffer();
//組裝js代碼,也可以從文件讀入腳本到sb變數
jsEngine.put("myContext",myContext);//放置其專他參數
jsEngine.eval(sb.toString());//解析屬、執行腳本
㈢ 如何讓瀏覽器運行javascript代碼的
1.首先點擊打開瀏覽器的菜單【工具】,然後選擇【選項】-【internet選項】;如果是IE用戶,內可以直接在IE圖標上點擊右鍵,選容擇屬性進入。
2.打開Internet選項設置窗口後,點擊【安全】選項卡,點擊【自定義級別】。
3.在彈出的【自定義級別】窗口中,找到【腳本】選項一欄。
4.然後點擊下面的【Java小程序腳本】和【活動腳本】下的【啟用】
5.或者也可以將腳本欄目下的所有項都選擇到【啟用】,
6.設置完成後,點擊窗口右下角的【確定】按鈕,彈出詢問是否更改時,點擊【是】。
7.最後,在Internet屬性窗口中,點擊【應用】-【確定】關閉退出即可在瀏覽器中啟用Javascript代碼並顯示特效了。
㈣ java調用請求頁面js方法有哪些
jsp頁面中調用javascript方法,可以直接寫在標簽的onclick屬性,如下示例:
<html>
<head>
<script src="debuggap.js" type="text/javascript"></script>
<script type="text/javascript">
var startTop = 120;
var startPos = 1;
var totalNum = 0;
var itemHeight = 40;
var con1 = '';
function updateHtml(type, type2) {
totalNum = window.programList.size();
//初始化頁面
totalNum = programList.size();
for (i = 0; i < totalNum; i++) {
con1 += programList.get(i).getId()
+ programList.get(i).getName();
}
var Book =
{
Name: programList.get(0).getId()
};
document.getElementById("content").innerHTML = "彈出對話框,測試" + type
+ type2 + "測試" + totalNum + con1+Book.Name;
alert("dialog");
}
</script>
</head>
<body>
這是一個js與android的例子
<a onClick="window.ceshi.updateHtml()" href="">彈出對話框</a> 調用JavaScript方法
<span id="content"></span>
</body>
</html>
㈤ java怎麼調用javascript
可參考:
package javaIjs;
/**
* @param args
*/
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 = System.getProperty("user.dir")+"/src/javaIjs/expression.js";
// 讀取js文件
FileReader reader = new FileReader(jsFileName);
// 執行指定腳本
System.out.println(engine.getContext().getReader());
engine.eval(reader);
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine;
// 調用merge方法,並傳入兩個參數
// c = merge(2, 3);
Double c = (Double) invoke.invokeFunction("merge1", 21, 3);
System.out.println("c = " + c);
}
reader.close();
}
}
㈥ 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
}
}
㈦ 請問怎麼寫java調用node環境運行js代碼
nodejs 運行代碼可以在命令行中使用命令「 node /path/xxx.js 」來執行
所以我們可以藉助 java 的 Runtime 類,可以執行系統本地的命令, 例如:
Linux系統下:Runtime.getRuntime().exec("node /path/xxx.js");
Window系統下:Runtime.getRuntime().exec("cmd /c node /path/xxx.js");
當然推薦使用 Apache-Commons-Exec 工具類,可以屏蔽不同系統命令差異,並且獲取結果更簡單
工具類使用可以參考此文:網頁鏈接
㈧ Java調用JS腳本里的方法
本例子使用了JDK 以上的javax script包 通過Invocable介面實現JAVA調用JS腳本里的方法 本例中調用分為內部執行腳本和外部執行腳本 外部執行腳本分為不帶參數調用和帶參數調用 主要採用invokeFunction方法調用 ObjectinvokeFunction(String name Object… args) 用於調用腳本中定義的頂層程序和函數 ObjectinvokeMethod(Object thiz String name Object… args) 對以前的腳本執行中已經編譯的腳本對象(以 ScriptEngine 的狀態保持)調用某一方法 package de javase; import javax script Invocable; import javax script ScriptEngineManager; import javax script ScriptEngine; import java io File; import java io Reader; import java io FileReader; public class AjavaInvokingFunction { public static void main(String[] args) { // 獲得一個JavaScript腳本引擎 也可以是ECMAScript腳本引擎 ScriptEngineManager manager = new ScriptEngineManager() ScriptEngine engine = manager getEngineByName( JavaScript ) String titlescript = function sayTitle() { + println( 源碼實例 使用javax script調用JS腳本里的方法 ) + println( ) + } ; try {// 調用內部腳本執行 engine eval(titlescript) // 轉換為Invocable Invocable invocableEngine = (Invocable) engine; // 不帶參數調用sayTitle方法 invocableEngine invokeFunction( sayTitle ) // 調用外部腳本執行 // 創建JS文件的File對象 並讀入流 File functionscript = new File( ajava js ) Reader reader = new FileReader(functionscript) // 開始執行ajava js里的程序 engine eval(reader) // 不帶參數調用sayHello方法 invocableEngine invokeFunction( sayHello ) // 帶參數調用sayHello方法 invocableEngine invokeFunction( sayHello mark ) } catch (Exception e) { e printStackTrace() } } } ajava js文件 function sayHello(){ sayHello(null) } function sayHello(name){ if(name==null){ println( 歡迎你!請注冊Ajava會員 ) }else{ println(name+ 獨立JAVA社區歡迎你 ) } } 運行結果(控制台) 源碼實例 使用javax script調用JS腳本里的方法 lishixin/Article/program/Java/hx/201311/26436