欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java编程中实现调用js方法分析

程序员文章站 2024-02-24 14:01:34
本文实例讲述了java编程中实现调用js方法。分享给大家供大家参考,具体如下: /* * 加载脚本引擎,并在java中调用js方法 */ public vo...

本文实例讲述了java编程中实现调用js方法。分享给大家供大家参考,具体如下:

/*
* 加载脚本引擎,并在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中调用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中对象作为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中如何通过线程来启动一个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算法相关内容感兴趣的读者可查看本站专题:《java字符与字符串操作技巧总结》、《java数组操作技巧总结》、《java数学运算技巧总结》、《java编码操作技巧总结》和《java数据结构与算法教程

希望本文所述对大家java程序设计有所帮助。