本文目錄一覽:
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來訪問服務器。但是我想這個應該不是你想要的東西。
如何在java調用js
script type=”text/javascript” src=”js/jquery-3.1.0.min.js”/script
就是這樣引入js 。src 的 ‘js’的js是webroot下自己創建的名為js的文件夾 ,jquery-3.1.0.min.js是需要引入的js文件,你自己寫的js文件也可以這樣引入調用。還可以直接在頁面上這樣寫:
script language=”JavaScript” type=”text/javascript”
function init() {
———
}
/script
如何在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
原創文章,作者:UT8GR,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/128187.html