jsp页面中调用javascript方法,可以直接写在标签的onclick属性,如下示例:<body>这是一个js与android的例子弹出对话框 调用JavaScript方法。
jsp页面中调用javascript方法,可以直接写在标签的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>; 调用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,输入这个网址看看效果,就是document.domain="baidu.com";document.write("等等,这就是他引用的JS了。
有时候因为需要,我们想在Java中调用js方法,不再是像页面中一个事件触发,该如何做到呢?今天下午没事得时候小研究了下,现跟大家分享一下。
不对之处,望大家指正,共同进步![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引擎类,然后由它来调用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] 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就可以执行动态语言了,不过注意是jdk1.6版本的哦~这样写不知道你能不能看懂,这个问题远标java就已经讲过这个题目了,希望能帮到你。
页面:
<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();
还可以用专门获取网页的JAR包,好像是jsoap?上面的代码没有考虑转码的问题。如果是中文可能出现乱码,注意要统一编码格式。
------------------------------------------------------
修改了一下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中调用js方法,不再是像页面中一个事件触发,该如何做到呢?今天下午没事得时候小研究了下,现跟大家分享一下。
不对之处,望大家指正,共同进步![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引擎类,然后由它来调用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] 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就可以执行动态语言了,不过注意是jdk1.6版本的哦~这样写不知道你能不能看懂,这个问题远标java就已经讲过这个题目了,希望能帮到你。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.991秒