jsp頁(yè)面中調用javascript方法,可以直接寫(xiě)在標簽的onclick屬性,如下示例:<body>這是一個(gè)js與android的例子彈出對話(huà)框 調用JavaScript方法。
jsp頁(yè)面中調用javascript方法,可以直接寫(xiě)在標簽的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();//初始化頁(yè)面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 = ";彈出對話(huà)框,測試" + type+ type2 + ";測試" + totalNum + con1+Book.Name;alert("dialog");}</script></head><body>這是一個(gè)js與android的例子<a onClick="window.ceshi.updateHtml()" href="">;彈出對話(huà)框</a>; 調用JavaScript方法<span id="content"></span></body></html>。
JavaScript有兩種地方存在,一是在頁(yè)面就寫(xiě)出來(lái)的,二是引用的。
1.直接寫(xiě)出來(lái)的,一看就明白(右鍵->查看頁(yè)面源代碼)2.引用的,就比如說(shuō)這個(gè)頁(yè)面吧,其中有下面代碼: <link href="/ikqb.css" rel="stylesheet" type="text/css"> 通過(guò)這段代碼(src="/uploads/shbk//userlogin.js?213")知道他引用的位置是/userlogin.js,輸入這個(gè)網(wǎng)址看看效果,就是document.domain="baidu.com";document.write("等等,這就是他引用的JS了。
有時(shí)候因為需要,我們想在Java中調用js方法,不再是像頁(yè)面中一個(gè)事件觸發(fā),該如何做到呢?今天下午沒(méi)事得時(shí)候小研究了下,現跟大家分享一下。
不對之處,望大家指正,共同進(jìn)步![java] view plain copy/* * 加載腳本引擎,并在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] view plain copy/* * 在java中調用js,jdk1.6中有加載js引擎類(lèi),然后由它來(lái)調用js方法。 * 并通過(guò)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] view plain copy/* * 演示如何將java中對象作為js中全局變量,同時(shí)演示將file類(lèi)賦給腳本語(yǔ)言,并獲得其屬性。
*/ 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())");//無(wú)法使用alert方法 } catch (ScriptException e) { e.printStackTrace(); } } [java] view plain copy/* * 演示如何在java中如何通過(guò)線(xiàn)程來(lái)啟動(dòng)一個(gè)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就可以執行動(dòng)態(tài)語(yǔ)言了,不過(guò)注意是jdk1.6版本的哦~這樣寫(xiě)不知道你能不能看懂,這個(gè)問(wèn)題遠標java就已經(jīng)講過(guò)這個(gè)題目了,希望能幫到你。
頁(yè)面:
<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();
還可以用專(zhuān)門(mén)獲取網(wǎng)頁(yè)的JAR包,好像是jsoap?上面的代碼沒(méi)有考慮轉碼的問(wèn)題。如果是中文可能出現亂碼,注意要統一編碼格式。
------------------------------------------------------
修改了一下servlet的doPost方法,解決編碼問(wèn)題。我的頁(yè)面是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();
有時(shí)候因為需要,我們想在Java中調用js方法,不再是像頁(yè)面中一個(gè)事件觸發(fā),該如何做到呢?今天下午沒(méi)事得時(shí)候小研究了下,現跟大家分享一下。
不對之處,望大家指正,共同進(jìn)步![java] view plain copy/* * 加載腳本引擎,并在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] view plain copy/* * 在java中調用js,jdk1.6中有加載js引擎類(lèi),然后由它來(lái)調用js方法。 * 并通過(guò)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] view plain copy/* * 演示如何將java中對象作為js中全局變量,同時(shí)演示將file類(lèi)賦給腳本語(yǔ)言,并獲得其屬性。
*/ 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())");//無(wú)法使用alert方法 } catch (ScriptException e) { e.printStackTrace(); } } [java] view plain copy/* * 演示如何在java中如何通過(guò)線(xiàn)程來(lái)啟動(dòng)一個(gè)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就可以執行動(dòng)態(tài)語(yǔ)言了,不過(guò)注意是jdk1.6版本的哦~這樣寫(xiě)不知道你能不能看懂,這個(gè)問(wèn)題遠標java就已經(jīng)講過(guò)這個(gè)題目了,希望能幫到你。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.991秒