1.通過AJAX用JS訪問JAVA中的某個(gè)方法,然后在JAVA代碼中將JS代碼放到response的輸出流中,然后eval()返回的JS代碼。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比揚(yáng)中網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式揚(yáng)中網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋揚(yáng)中地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
2.JSP中可以嵌入java代碼塊,比如在jsp頁面中寫如下代碼:
script
%if(a==1){%
alert("abc");
%}%
/script
這樣頁面在加載的時(shí)候就會(huì)先執(zhí)行JAVA代碼,如果a==1了 alert("abc")這句JS代碼才會(huì)有。
希望滿足你的要求
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);
/**
* 后置處理,執(zhí)行js腳本
* @param js
* @throws Exception
*/
public void execJs(String js, MapString,Object map) throws Exception {
if (log.isDebugEnabled()) {
log.debug("execJs js : " + js);
IteratorEntryString, Object it = map.entrySet().iterator();
while (it.hasNext()) {
EntryString, Object entry = (EntryString, 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");
// 綁定數(shù)據(jù)
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
}
}
要在java中執(zhí)行js代碼,首先明白,java不支持瀏覽器本身的方法。支持自定義的js方法,否則會(huì)報(bào)錯(cuò)
先新建一個(gè)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方法,并傳入兩個(gè)參數(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ù) // 錯(cuò)誤,會(huì)拋出alert引用不 ? ?}
}
方法一:file --》 new file-- 輸入javascript 【出現(xiàn)javascript 一個(gè)是項(xiàng)目 一個(gè)是file】--》直接選擇javascript 文件就可以了
方法2:右擊新建file 后綴名改成js 就可以了