zoukankan      html  css  js  c++  java
  • JDK1.7中调用javascript方法

    import java.io.File;
    
    import javax.script.Invocable;
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    public class TestJs {
        public static void main(String[] args) throws Exception {
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("JavaScript");
            testScriptVariables(engine);// 演示如何暴露Java对象为脚本语言的全局变量
            testInvokeScriptMethod(engine);// 演示如何在Java中调用脚本语言的方法
            testScriptInterface(engine);// 演示脚本语言如何实现Java的接口
            testUsingJDKClasses(engine);// 演示脚本语言如何使用JDK平台下的类
        }
    
        public static void testScriptVariables(ScriptEngine engine)
                throws ScriptException {
            File file = new File("test.txt");
            engine.put("f", file);
            engine.eval("println('Total Space:'+f.getTotalSpace())");
        }
    
        public static void testInvokeScriptMethod(ScriptEngine engine)
                throws Exception {
            String script = "function hello(name) { return 'Hello,' + name;}";
            engine.eval(script);
            Invocable inv = (Invocable) engine;
            String res = (String) inv.invokeFunction("hello", "Scripting");
            System.out.println("res:" + res);
        }
    
        public static void testScriptInterface(ScriptEngine engine)
                throws ScriptException {
            String script = "var obj = new Object(); obj.run = function() { println('run method called'); }";
            engine.eval(script);
            Object obj = engine.get("obj");
            Invocable inv = (Invocable) engine;
            Runnable r = inv.getInterface(obj, Runnable.class);
            Thread th = new Thread(r);
            th.start();
        }
    
        public static void testUsingJDKClasses(ScriptEngine engine)
                throws Exception {
            // Packages是脚本语言里的一个全局变量,专用于访问JDK的package
            String js = "function doSwing(t){var f=new Packages.javax.swing.JFrame(t);f.setSize(400,300);f.setVisible(true);}";
            engine.eval(js);
            Invocable inv = (Invocable) engine;
            inv.invokeFunction("doSwing", "Scripting Swing");
        }
    }
  • 相关阅读:
    精简shell基础
    Centos7.4下安装Jumpserver 1.0.0(支持windows组件)
    二.Flask 学习模板
    一、Flask路由介绍
    web爬虫,BeautifulSoup
    web爬虫,requests请求
    django之Form组件补充
    中间件和Django缓存
    django之Form组件
    django from表单验证
  • 原文地址:https://www.cnblogs.com/sm21312/p/4066426.html
Copyright © 2011-2022 走看看