java調(diào)用js代碼 java調(diào)用js的ajax

請問怎么寫java調(diào)用node環(huán)境運行js代碼?

nodejs 運行代碼可以在命令行中使用命令“ node /path/xxx.js ”來執(zhí)行

創(chuàng)新互聯(lián)建站長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為茫崖企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,茫崖網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

所以我們可以借助 java 的 Runtime 類,可以執(zhí)行系統(tǒng)本地的命令, 例如:

Linux系統(tǒng)下:Runtime.getRuntime().exec("node /path/xxx.js");

Window系統(tǒng)下:Runtime.getRuntime().exec("cmd /c node /path/xxx.js");

當然推薦使用 Apache-Commons-Exec 工具類,可以屏蔽不同系統(tǒng)命令差異,并且獲取結(jié)果更簡單

工具類使用可以參考此文:?網(wǎng)頁鏈接

Java調(diào)用JS腳本里的方法

;?? 本例子使用了JDK 以上的javax script包 通過Invocable接口實現(xiàn)JAVA調(diào)用JS腳本里的方法 本例中調(diào)用分為內(nèi)部執(zhí)行腳本和外部執(zhí)行腳本 外部執(zhí)行腳本分為不帶參數(shù)調(diào)用和帶參數(shù)調(diào)用 主要采用invokeFunction方法調(diào)用 ??? ??? ObjectinvokeFunction(String name Object… args)??? ??? 用于調(diào)用腳本中定義的頂層程序和函數(shù) ??? ??? ObjectinvokeMethod(Object thiz String name Object… args)??? ??? 對以前的腳本執(zhí)行中已經(jīng)編譯的腳本對象(以 ScriptEngine 的狀態(tài)保持)調(diào)用某一方法 ??? ??? 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調(diào)用JS腳本里的方法 ) ??? ??? + ?? println( ) ??? ??? + } ;??? ??? try {???

// 調(diào)用內(nèi)部腳本執(zhí)行 ??? ??? engine eval(titlescript) ??? ??? // 轉(zhuǎn)換為Invocable??? ??? Invocable invocableEngine = (Invocable) engine;??? ??? // 不帶參數(shù)調(diào)用sayTitle方法??? ??? invocableEngine invokeFunction( sayTitle ) ??? ??? // 調(diào)用外部腳本執(zhí)行 ??? ??? // 創(chuàng)建JS文件的File對象 并讀入流??? ??? File functionscript = new File( ajava js ) ??? ??? Reader reader = new FileReader(functionscript) ??? ??? // 開始執(zhí)行ajava js里的程序??? ??? engine eval(reader) ??? ??? // 不帶參數(shù)調(diào)用sayHello方法??? ??? invocableEngine invokeFunction( sayHello ) ??? ??? // 帶參數(shù)調(diào)用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社區(qū)歡迎你 ) ??? ??? }??? ??? }??? ??? 運行結(jié)果(控制臺) ??? ??? 源碼實例 使用javax script調(diào)用JS腳本里的方法 lishixinzhi/Article/program/Java/hx/201311/26436

如何用java執(zhí)行指定頁面中的js代碼

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

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

內(nèi)容如下:

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); ? // 執(zhí)行指定腳本 ? ?? ? ? ? ?engine.eval(reader);

if(engine instanceof Invocable) {

Invocable invoke = (Invocable)engine; ? ?// 調(diào)用merge方法,并傳入兩個參數(shù)

Double c = (Double)invoke.invokeFunction("aa", 2, 3); //調(diào)用了js的aa方法

System.out.println(c);

}

// engine.eval("alert(\"js alert\");"); ? ?// 不能調(diào)用瀏覽器中定義的js函數(shù) // 錯誤,會拋出alert引用不 ? ?}

}

新聞標題:java調(diào)用js代碼 java調(diào)用js的ajax
地址分享:http://muchs.cn/article2/dohsioc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站排名、虛擬主機、面包屑導(dǎo)航關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名