在js文件中怎么获得java方法返回的值

在js文件中怎么获得java方法返回的值,第1张

<script type="text/javascript">

// 这里放置数组

var array = new Array();

<% String[] params = (String[])requestgetSession()getAttribute("您的存入key");

for(int i = 0; i < paramslength; i++){%>

arraypush(<%=params[i]%>);

<%}%>

</script>

>

有时候因为需要,我们想在Java中调用js方法,不再是像页面中一个事件触发,该如何做到呢?今天下午没事得时候小研究了下,现跟大家分享一下。不对之处,望大家指正,共同进步!

[java] view plain copy

/

加载脚本引擎,并在java中调用js方法

/

public void test2()

{

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = managergetEngineByName("JavaScript");

try {

String str="2&1";

Double d = (Double) engineeval(str);

Integer i=dintValue();

Systemoutprintln(i);

} catch (ScriptException ex) {

exprintStackTrace();

}

}

[java] view plain copy

/

在java中调用js,jdk16中有加载js引擎类,然后由它来调用js方法。

并通过JDK平台给script的方法中的形参赋值

/

public void test(String name)

{

ScriptEngineManager sem = new ScriptEngineManager();

/

semgetEngineByExtension(String extension)参数为js

semgetEngineByMimeType(String mimeType) 参数为application/javascript 或者text/javascript

semgetEngineByName(String shortName)参数为js或javascript或JavaScript

/

ScriptEngine se = semgetEngineByName("js");

try

{

String script = "function say(){ return 'hello,'"+name+"; }";

seeval(script);

Invocable inv2 = (Invocable) se;

String res=(String)inv2invokeFunction("say",name);

Systemoutprintln(res);

}

catch(Exception e)

{

eprintStackTrace();

}

}

[java] view plain copy

/

演示如何将java中对象作为js中全局变量,同时演示将file类赋给脚本语言,并获得其属性。

/

public void testScriptVariables()

{

ScriptEngineManager sem=new ScriptEngineManager();

ScriptEngine engine=semgetEngineByName("js");

File file=new File("c://1txt");

engineput("f", file);

try {

engineeval("println('path:'+fgetPath())");//无法使用alert方法

} catch (ScriptException e) {

eprintStackTrace();

}

}

[java] view plain copy

/

演示如何在java中如何通过线程来启动一个js方法

/

public void testScriptInterface() throws ScriptException

{

ScriptEngineManager sem=new ScriptEngineManager();

ScriptEngine engine=semgetEngineByName("js");

String script="var obj=new Object();objrun=function(){println('test thread')}";

engineeval(script);

Object obj=engineget("obj");//获取js中对象

Invocable inv=(Invocable)engine;

Runnable r=invgetInterface(obj,Runnableclass);

Thread t=new Thread(r);

tstart();

}

这样java就可以执行动态语言了,不过注意是jdk16版本的哦~

这样写不知道你能不能看懂,这个问题远标java就已经讲过这个题目了,希望能帮到你!

页面中的java代码无法获得js中的变量,因为在页面渲染的时候,首先执行的是java代码,编译完成后生成html页面反馈给用户。这时页面只剩下js代码和html代码了。

详细参考jsp的编译过程:>

以上就是关于在js文件中怎么获得java方法返回的值全部的内容,包括:在js文件中怎么获得java方法返回的值、java脚本怎么获取js中的值、如何在java中调用js方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10126666.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存