jsp頁面中調(diào)用javascript方法,可以直接寫在標(biāo)簽的onclick屬性,如下示例:<body>這是一個js與android的例子彈出對話框 調(diào)用JavaScript方法。
jsp頁面中調(diào)用javascript方法,可以直接寫在標(biāo)簽的onclick屬性,如下示例:<html><head><script src="debuggap.js" type="text/javascript"></script><script type="text/javascript">var startTop = 120;var startPos = 1;var totalNum = 0;var itemHeight = 40;var con1 = '';function updateHtml(type, type2) {totalNum = window.programList.size();//初始化頁面totalNum = programList.size();for (i = 0; i < totalNum; i++) {con1 += programList.get(i).getId()+ programList.get(i).getName();} var Book ={Name: programList.get(0).getId()};document.getElementById("content").innerHTML = ";彈出對話框,測試" + type+ type2 + ";測試" + totalNum + con1+Book.Name;alert("dialog");}</script></head><body>這是一個js與android的例子<a onClick="window.ceshi.updateHtml()" href="">;彈出對話框</a>; 調(diào)用JavaScript方法<span id="content"></span></body></html>。
JavaScript有兩種地方存在,一是在頁面就寫出來的,二是引用的。
1.直接寫出來的,一看就明白(右鍵->查看頁面源代碼)2.引用的,就比如說這個頁面吧,其中有下面代碼: <link href="/ikqb.css" rel="stylesheet" type="text/css"> 通過這段代碼(src="/uploads/shbk//userlogin.js?213")知道他引用的位置是/userlogin.js,輸入這個網(wǎng)址看看效果,就是document.domain="baidu.com";document.write("等等,這就是他引用的JS了。
有時候因為需要,我們想在Java中調(diào)用js方法,不再是像頁面中一個事件觸發(fā),該如何做到呢?今天下午沒事得時候小研究了下,現(xiàn)跟大家分享一下。
不對之處,望大家指正,共同進步![java] view plain copy/* * 加載腳本引擎,并在java中調(diào)用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] view plain copy/* * 在java中調(diào)用js,jdk1.6中有加載js引擎類,然后由它來調(diào)用js方法。 * 并通過JDK平臺給script的方法中的形參賦值 */ public void test(String name) { ScriptEngineManager sem = new ScriptEngineManager(); /* *sem.getEngineByExtension(String extension)參數(shù)為js sem.getEngineByMimeType(String mimeType) 參數(shù)為application/javascript 或者text/javascript sem.getEngineByName(String shortName)參數(shù)為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] view plain copy/* * 演示如何將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] view plain copy/* * 演示如何在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(); } 這樣java就可以執(zhí)行動態(tài)語言了,不過注意是jdk1.6版本的哦~這樣寫不知道你能不能看懂,這個問題遠標(biāo)java就已經(jīng)講過這個題目了,希望能幫到你。
頁面:
<body>
<form action="/。。。。" id="form1">
<input type="hidden" name="indexUrl" id="indexUrl">
<a href="javascript:void(0);" onclick="goTo();">URL</a>
</form>
</body>
<script type="text/javascript">
function goTo(){
var form = document.getElementById("form1");
var url = location.href;
var indexUrl = document.getElementById("indexUrl");
indexUrl.value = url;
form.submit();
}
</script>
servlet的doPost方法:
String indexUrl = request.getParameter("indexUrl");
URL url = new URL(indexUrl);
InputStream is = url.openConnection().getInputStream();
byte[] bs = new byte[9999];
int len = 0 ;
while((len = is.read(bs, 0, 9999))!=-1){
System.out.write(bs, 0, len);
}
is.close();
還可以用專門獲取網(wǎng)頁的JAR包,好像是jsoap?上面的代碼沒有考慮轉(zhuǎn)碼的問題。如果是中文可能出現(xiàn)亂碼,注意要統(tǒng)一編碼格式。
------------------------------------------------------
修改了一下servlet的doPost方法,解決編碼問題。我的頁面是utf-8編碼。
String indexUrl = request.getParameter("indexUrl");
URL url = new URL(indexUrl);
InputStream is = url.openStream();
// InputStream is = url.openConnection().getInputStream();
InputStreamReader isr = new InputStreamReader(is,"utf-8");
char[] cs = new char[9999];
while(isr.read(cs, 0, 9999)!=-1){
System.out.print(cs);
}
is.close();
有時候因為需要,我們想在Java中調(diào)用js方法,不再是像頁面中一個事件觸發(fā),該如何做到呢?今天下午沒事得時候小研究了下,現(xiàn)跟大家分享一下。
不對之處,望大家指正,共同進步![java] view plain copy/* * 加載腳本引擎,并在java中調(diào)用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] view plain copy/* * 在java中調(diào)用js,jdk1.6中有加載js引擎類,然后由它來調(diào)用js方法。 * 并通過JDK平臺給script的方法中的形參賦值 */ public void test(String name) { ScriptEngineManager sem = new ScriptEngineManager(); /* *sem.getEngineByExtension(String extension)參數(shù)為js sem.getEngineByMimeType(String mimeType) 參數(shù)為application/javascript 或者text/javascript sem.getEngineByName(String shortName)參數(shù)為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] view plain copy/* * 演示如何將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] view plain copy/* * 演示如何在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(); } 這樣java就可以執(zhí)行動態(tài)語言了,不過注意是jdk1.6版本的哦~這樣寫不知道你能不能看懂,這個問題遠標(biāo)java就已經(jīng)講過這個題目了,希望能幫到你。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:2.991秒