⑴ 如何在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
⑵ JAVA代碼中如何調用js
如果是jsp的話直接在out.print()中寫就可以了,如果在applet和application中可以用外部調用的方式調用,Runtime rn=Runtime.getRuntime(); Process p=null; rn.exec("xx.js")但是這樣不是很安全.
⑶ 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里的變數
java代碼是後台的,在伺服器端執行;js是前端的,在瀏覽器里執行。。。他們不會在一起。。如果用jsp的話,直接里套上就行了
⑸ java如何調用js里的變數
2種方法:
1、用一個隱藏的<input type="hidden" name="isNecessary" />,先將JS變數的值賦給input,然後在java裡面用request.getParameter(" isNecessary");
此法為傳說中的post方法。
2、通過鏈接的方式,即後面加問號的方式:
var isNecessary="aaa";
var URL='<%=request.getContextPath()%>/action/xx.do isNecessary='+isNecessary;
//這里假設JS裡面的變數的值是isNecessary。
然後用window.location.href=URL;
JAVA裡面依然用request.getParameter(" isNecessary")調用。
⑹ jsp的java代碼部分怎麼直接調用js代碼中定義的變數
ScriptEngine 這個類可以直接執行js,但不能調用jsp中已定義好的js
⑺ jsp 中java代碼怎麼直接獲取js里的變數
jsp里的java代碼是在伺服器上執行的,而js是在客戶端執行的。執行順序是先進行java執行後發給客戶端再運行js,所以同一個頁面里的java代碼是獲取不到js變數的,那個時候js都還沒執行,js內存都沒分配呢,就不會js變數的。
⑻ java裡面怎樣使用js的變數
通過<%=java變數%>的方式賦值給js變數。
1、定義一個java變數
<% String a = "222";//定義一個string類型的java變數%>
2、輸出給js
var k = <%=a%>;輸出變數值給k,這是的k是222
補充:
<% %> 標識裡面的是jsp代碼,可以定義java變數<%=變數 %> 輸出java變數信息
⑼ js怎麼引用JSP里定義的JAVA變數
可以將JAVA變數在JSP頭部定義成全局變數。
然後可以分別在JS和JSP里調用。
因為可以將JS和JSP理解為兩個相互獨立的塊。這2個塊裡面的變數都是局部變數。而局部變數是不共享的。
首先很基礎的:JS可以直接引用JAVA變數,但JAVA不能引用JS變數。因為頁面是先編譯JAVA再編譯JS,代碼如下:
String tbname="bd_bank";
out.write("<SCRIPT language="+"'"+"JavaScript"+"'"+">var tbname="+"'"+tbname+"'"+";</SCRIPT>");
%>
//下面的javascipt可以直接調用變數tbname
<script language="javascript">
alert(tbname);
</script>
//在js文件中的javascipt一樣可以直接使用變數 tbname 啊。
<script language="JavaScript" src="../comm/dbgrid.js"></script>
反正兩個原則記好:
1、jsp代碼中可以構造javascipt語句,當然包括定義備用的javascipt的變數
2、理論上在整個頁面中,任何一個地方定義的javascript代碼都可以被正確使用。javascipt代碼對位置不敏感。
⑽ java 調用 js函數
function是屬於javascript裡面的語法,而<%%>裡面調用的是java的語法,所以想要用<%%>調用alert()是不行了,因為他們不是同一個東西。
不知道你的意思是不是頁面一載入就進行調用alert(),如果是這樣的話,建議使用onload事件,表示頁面載入的時候調用alert();
或者如果是點擊的時候調用,那麼久調用onclick()..總而言之可以使用事件完成。