java引用js
1. 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();
}
2. java中可以使用js代碼嗎
jsp中可以將java,js,htm糅合在一起,這是一種用法,另外如果你用過servlet,就會知道本身servlet調用輸出方法可以生成HTML,那也是可以用js代碼的。
3. 如何用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引用不 }
}
4. 如何在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
5. java 調用 js函數
function是屬於javascript裡面的語法,而<%%>裡面調用的是java的語法,所以想要用<%%>調用alert()是不行了,因為他們不是同一個東西。
不知道你的意思是不是頁面一載入就進行調用alert(),如果是這樣的話,建議使用onload事件,表示頁面載入的時候調用alert();
或者如果是點擊的時候調用,那麼久調用onclick()..總而言之可以使用事件完成。
6. 如何通過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();
}
}
}
7. 請問怎麼寫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 工具類,可以屏蔽不同系統命令差異,並且獲取結果更簡單
工具類使用可以參考此文:網頁鏈接
8. java後台怎麼調用前台js方法
可使用前台js申請後台java代碼,把數據用返回值的方式,返回給前台。這種方式用的最多的就是使用ajax了。使用在後台與伺服器進行少量數據交換,ajax可使網站實現非同步更換。這意味著可在不重新載入整個網站的情況下,關於網站的某個部分進行更換。