用ScriptEngine在java中和javascript交互的例子(JDK6新特性)

1. [代码][Java]代码     
package demo7;
 
import java.util.Arrays;
import java.util.List;
 
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
 
public class ScriptEngineTest {
 
    public static void main(String[] args) throws Exception {
        ScriptEngineManager sem = new ScriptEngineManager();
        ScriptEngine engine = sem.getEngineByName("javascript");
 
        // 1
        engine.put("msg", "just a test");
        String str = "msg += ‘!!!‘;var user = {name:‘tom‘,age:23,hobbies:[‘football‘,‘basketball‘]}; var name = user.name; var hb = user.hobbies[1];";
        engine.eval(str);
 
        String msg = (String) engine.get("msg");
        String name = (String) engine.get("name");
        String hb = (String) engine.get("hb");
        System.out.println(msg);
        System.out.println(name + ":" + hb);
 
        // 2
        engine.eval("function add (a, b) {c = a + b; return c; }");
        Invocable jsInvoke = (Invocable) engine;
 
        Object result1 = jsInvoke.invokeFunction("add", new Object[] { 10, 5 });
        System.out.println(result1);
 
        // 3
        Adder adder = jsInvoke.getInterface(Adder.class);
        int result2 = adder.add(10, 35);
        System.out.println(result2);
 
        // 4
        engine.eval("function run() {print(‘www.java2s.com‘);}");
        Invocable invokeEngine = (Invocable) engine;
        Runnable runner = invokeEngine.getInterface(Runnable.class);
        Thread t = new Thread(runner);
        t.start();
        t.join();
 
        // 5
        String jsCode = "importPackage(java.util);var list2 = Arrays.asList([‘A‘, ‘B‘, ‘C‘]); ";
        engine.eval(jsCode);http://www.bizhizu.cn/shouhui/?
        List<String> list2 = (List<String>) engine.get("list2");
        for (String val : list2) {手绘图片
            System.out.println(val);
        }
         
    }
}
 
interface Adder {
    int add(int a, int b);
}

用ScriptEngine在java中和javascript交互的例子(JDK6新特性)

时间: 2024-10-14 18:41:42

用ScriptEngine在java中和javascript交互的例子(JDK6新特性)的相关文章

在java中和javascript中过滤掉类似于img形式的字符串,从而不显示图片

1:javascript过滤掉<img></img>和<img />形式的字符串 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtm

android 中java和javascript交互

android的WebView是一个非常强大的控件,本文主要针对其简单使用和笔者在使用时所遇到的问题做一些总结. 本文参考了该博文:http://blog.csdn.net/zgjxwl/article/details/9627685 一.WebView中Java与javascript交互 1.这是要和js交互的注入接口类: public final class JavascriptInteerface{ @JavascriptInterface public void test(String

Android中Java和JavaScript交互

Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如何实现 实现Java和js交互十分便捷.通常只需要以下几步. WebView开启JavaScript脚本执行 WebView设置供JavaScript调用的交互接口. 客户端和网页端编写调用对方的代码. 本例代码 为了便于讲解,先贴出全部代码 Java代码 package com.example.j

Android 中Java和JavaScript交互入门

如何实现JavaScript 和java 交互 实现Java和js交互十分便捷.通常只需要以下几步. WebView开启JavaScript脚本执行 WebView设置供JavaScript调用的交互接口. 客户端和网页端编写调用对方的代码. #直接看示例代码: java代码如下: package com.ccb.javascript; import java.net.URISyntaxException; import android.annotation.SuppressLint; impo

WebView上实现Java与JavaScript交互

在安卓开发上,考虑到开发效率和界面更新,有时使用WebView结合web页面技术,可以快速迭代地开发移动应用.WebView加载资源的速度并不慢,但是如果资源多了,就很慢.图片.css.js.html这些资源每个大概需要10-200ms,一般都是30ms以内就行了.但是,WebView是等全部资源加载完成才开始渲染的,所以最后用原生js来写,别用太多jQuery之类的框架,以改善用户体验. 在混合开发中,有时会用到安卓原生SDK,如调用相机.查看相册.录音等,这就需要web页面中的JavaScr

Android WebView Java和JavaScript交互

Java调用JavaScript mWebView.loadUrl("javascript:toast()"); js: <script language="javascript> <!--提供给android的java代码调用--> function toast(){ alert("fdsaf") } JavaScript调用Java WebView提供了一个名为WebSetting的工具类来实现让WebView中的JavaScr

一次电话Java面试的问题总结(JDK8新特性、哈希冲突、HashMap原理、线程安全、Linux查询命令、Hadoop节点)

面试涉及问题含有: Java JDK8新特性 集合(哈希冲突.HashMap的原理.自动排序的集合TreeSet) 多线程安全问题 String和StringBuffer JVM 原理.运行流程.内部结构 Linux 查询含有某字符串内容的命令grep 查询进程.GC状态.杀死进程 Hadoop五种节点介绍 -----------------------------------------------------------------------------------------------

Java 5 、6、 7中新特性

JDK5新特性(与1.4相比)[转] 1 循环 for (type variable : array){ body} for (type variable : arrayList){body} 而1.4必须是: for (int i = 0; i < array.length; i++){ type variable = array[i];    body} for (int i = 0; i < arrayList.size(); i++){type variable = (type) ar

java 基础加强(myeclipse,debug,junit,JDK5新特性,反射)

思维导图 1.myeclipse的安装和使用 *eclipse:是一个免费的开发工具 *myeclipse:是一个收费的插件,破解myeclipse, **安装目录的要求: 不能有中文和空格 **安装完成之后,选择一个工作空间 ,这个工作空间不能有中文和空格 *破解myeclipse **运行run.bat文件,但是运行之前,必须要安装jdk,通过配置环境变量 *myeclipse的使用 *创建一个工程 -类型 javaproject  web  project -选择依赖的jdk,可以使用my