當前位置:首頁 » 編程軟體 » java調用js腳本

java調用js腳本

發布時間: 2022-07-16 03:23:48

1. 如何用java執行指定頁面中的js代碼

要在java中執行js代碼,首先明白,java不支持瀏覽器本身的方法。支持自定義的js方法,否則會報錯

先新建一個js文件:jsss.js

內容如下:

function aa(a,b){ return a+b;
}

然後在java中寫代碼:

public class ZipTest {
public static void main(String[] args) throws Exception {

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String jsFileName="G:\javaPro\zmwmcc\WebRoot\jsss.js";
FileReader reader = new FileReader(jsFileName); // 執行指定腳本 engine.eval(reader);
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)engine; // 調用merge方法,並傳入兩個參數
Double c = (Double)invoke.invokeFunction("aa", 2, 3); //調用了js的aa方法
System.out.println(c);
}
// engine.eval("alert("js alert");"); // 不能調用瀏覽器中定義的js函數 // 錯誤,會拋出alert引用不 }
}

2. java 調用 js函數

function是屬於javascript裡面的語法,而<%%>裡面調用的是java的語法,所以想要用<%%>調用alert()是不行了,因為他們不是同一個東西。
不知道你的意思是不是頁面一載入就進行調用alert(),如果是這樣的話,建議使用onload事件,表示頁面載入的時候調用alert();
或者如果是點擊的時候調用,那麼久調用onclick()..總而言之可以使用事件完成。

3. 如何在java中調用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

4. 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();

}

5. 如何通過java代碼調用js

JDK1.6版添加了新的ScriptEngine類,允許用戶直接執行js代碼。
在Java中直接調用js代碼
不能調用瀏覽器中定義的js函數,會拋出異常提示ReferenceError: 「alert」 is not defined。
package com.sinaapp.manjushri;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException; /** * 直接調用js代碼 */
public class ScriptEngineTest {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try{

engine.eval("var a=3; var b=4;print (a+b);");

// engine.eval("alert(\"js alert\");"); // 不能調用瀏覽器中定義的js函數 // 錯誤,會拋出alert引用不存在的異常
}catch(ScriptException e){

e.printStackTrace();
}
}
}

6. java如何調用node.js啊

引入到對應的頁面上就可以了,比如
<script type="text/javascript" src="....node.js"></script>
具體路徑可以自己寫

7. java用什麼調用js代碼

在Java中直接調用js代碼
不能調用瀏覽器中定義的js函數,會拋出異常提示ReferenceError: 「alert」 is not defined。
在Java中綁定js變數
在調用engine.get(key);時,如果key沒有定義,則返回null

8. 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

}

}

9. java怎樣調用js

首先java和js是完全兩碼事
兩個的運行是不相乾的
java是後台程序 運行在伺服器上 而js則是生存在客戶端瀏覽器(如ie)
只能是js間接調用java
過程是:js在客戶端瀏覽器上運行,然後js讓瀏覽器發送請求到伺服器,然後伺服器上的中間件(如tomcat)來把瀏覽器的請求(httpRequest)轉交給java程序來處理。 典型的例子就是用js執行submit()提交表單到伺服器和js生成ajax對象然後通過ajax對象把信息發送給伺服器。 即js藉助瀏覽器來達到間接調用後台java程序的功能。
反過來就不行了
由於http協議是無狀態的,不像java與資料庫那樣有保持著的連接,資料庫是知道當前有誰再連接著自己的,而java程序所在的伺服器是無法直接溝通客戶端瀏覽器的,他壓根就不知道客戶端在哪,也因此無法去和運行在客戶端的js聯系。
你如果想調用這個EncodePwd(uin,psw), 只能是在客戶端瀏覽器上觸發這個方法(例如提交按鈕)然後把信息發送到伺服器端。
其實還有一種技術,即「伺服器推送」,這個大概可以實現你的想法,這是個新興技術,用於由伺服器直接把數據發送給客戶端,而不需要客戶端不停的用ajax來訪問伺服器。但是我想這個應該不是你想要的東西。

10. 怎麼用java 調用網頁js方法

首先,你要搞清楚JS是什麼,它是在HTML頁面上運用的,你想用JAVA代碼去調用,那是不行的都。最多,在前台頁面,和後台程序進行交互的時候,你可以用到JS跳轉傳參到後台JAVA程序中,進行互動。
JAVA直接調用JS的方法,我確實是沒有聽過

熱點內容
安卓輸入法哪個詞庫好 發布:2025-02-08 00:03:47 瀏覽:90
c存儲過程數據集 發布:2025-02-08 00:03:42 瀏覽:923
qq卡的密碼在哪裡找 發布:2025-02-07 23:59:32 瀏覽:964
安卓為什麼注冊不了lysn 發布:2025-02-07 23:55:36 瀏覽:93
十個字母無壓縮 發布:2025-02-07 23:54:51 瀏覽:380
java惡作劇小程序 發布:2025-02-07 23:53:48 瀏覽:671
openvas源碼 發布:2025-02-07 23:48:14 瀏覽:318
面java 發布:2025-02-07 23:36:21 瀏覽:617
編譯原理練習題第三章答案 發布:2025-02-07 23:35:05 瀏覽:752
爐石寫腳本 發布:2025-02-07 23:31:24 瀏覽:985