js函数保存在String字符串中

package com.netease.qiyu.test.datastageservice.service.impl;import com.netease.qiyu.test.datastageservice.service.KefuSipAccountRegisterService;
import org.springframework.stereotype.Service;import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.io.IOException;
import java.io.StringReader;@Service
public class KefuSipAccountRegisterServiceImpl implements KefuSipAccountRegisterService {public static void initialToolbarSDK(){// js function:getRouteInfo,入参为province// 参数不要带var。。不然后面执行方法的时候会报错。。String routeScript = "function getRouteInfo(province){ \n" + "      if (province=='henan') "+ "         return 'http://127.0.0.1/resweb';\n" + "      else  "+ "         return '未找到对应的省份信息,province='+province;\n" + "}";// 脚本的执行结果String scriptResult = "";// 1.得到脚本引擎ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");try {// 2.引擎读取 脚本字符串engine.eval(new StringReader(routeScript));// 如果js存在文件里,举例// Resource aesJs = new ClassPathResource("js/aes.js");// this.engine.eval(new FileReader(aesJs.getFile()));// 3.将引擎转换为Invocable,这样才可以掉用js的方法Invocable invocable = (Invocable)engine;// 4.使用 invocable.invokeFunction掉用js脚本里的方法,第一個参数为方法名,后面的参数为被调用的js方法的入参scriptResult = (String)invocable.invokeFunction("getRouteInfo", "henan");} catch (ScriptException e) {e.printStackTrace();System.out.println("Error executing script: " + e.getMessage() + " script:[" + routeScript + "]");} catch (NoSuchMethodException e) {e.printStackTrace();System.out.println("Error executing script,为找到需要的方法: " + e.getMessage() + " script:[" + routeScript + "]");}System.out.println(scriptResult.toString());}public static void main(String args[]){initialToolbarSDK();}
}

js函数保存在.js文件中

    public static void initialToolbarSDK(){String scriptResult = "";ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");try {//文件路径设置成绝对路径即可String jsFile = "service/impl/test.js";FileInputStream fileInputStream = new FileInputStream(new File(jsFile));Reader scriptReader = new InputStreamReader(fileInputStream, "utf-8");engine.eval(scriptReader);Invocable invocable = (Invocable)engine;scriptResult = (String)invocable.invokeFunction("getRouteInfo", "henan1");} catch (ScriptException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}System.out.println(scriptResult.toString());}

Java调用js方法相关推荐

  1. android java 调用js,Android中Java和JavaScript交互实例

    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如 ...

  2. 如何在java中调用js方法

    [java] view plain copy/* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEngineManager manager ...

  3. java 调用 js性能_太快了,太变态了:什么会影响Java中的方法调用性能?

    java 调用 js性能 那么这是怎么回事? 让我们从一个简短的故事开始. 几周前,我提议对Java核心libs邮件列表进行更改 ,以覆盖当前final一些方法. 这刺激了一些讨论主题-其中之一是其中 ...

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

    本文实例讲述了java编程中实现调用js方法.分享给大家供大家参考,具体如下: /* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEng ...

  5. android java 调用js_android WebApp 集成方式怎么使用java调用js

    WebAPP集成,本地打包,有两种方式java js通信 1.DCloud插件模式,参考SDK DEMO的H5Plugin, Java:继承StandardFeature写接口. public cla ...

  6. Java调用JS,JS调用JAVA

    JAVA 调用 JS //Java端 //带参数的函数调用 final String exes = "cc.Global.setEcADVal('"+ var1 + "' ...

  7. java 调用祖父方法_在Java中调用祖父母方法:您不能

    java 调用祖父方法 在文章保护的重点中,我详细介绍了"受保护"如何扩展"包私有"访问. 我在那儿写道: 你能做的是 覆盖子类中的方法或 使用关键字super ...

  8. Java 调用 Python 方法学习笔记

    文章转载自: 作者:IT_xiao_bai                         来源:CSDN                         原文:https://blog.csdn.n ...

  9. asp.net调用js方法小结

    asp.net调用js方法小结 key:asp.net js方法互调   asp.net 前台如何调用后台方法 1. javaScript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在 ...

最新文章

  1. Python基础语法难点突破
  2. python输出键值列表_Python 键值分组或分区数据
  3. Linux文件atime ctime mtime
  4. Silverlight 3 全系列开发工具发布
  5. vc通过ADO连接sql server 2000的核心代码
  6. Css、javascript、dom(一)
  7. 智能优化算法:鲸鱼优化算法-附代码
  8. Android 计步器 - 手机自带系统级的 健康运动App 授权
  9. c语言中整型常量和实型常量的写法
  10. Android Permission is only granted to system apps问题
  11. 优矿量化向导式因子选股
  12. 注意力机制-多头注意力
  13. Be An Effective Engineer
  14. 计算机网络常青藤讲义,宾语从句学习讲义
  15. 跨模态行人重识别:Deep Learning for Person Re-identification:A Survey and Outlook(行人重识别综述)
  16. 华为手机提示 系统发现xxx删除照片提示 如何不提示,且不保存在最近删除列表
  17. 如何在cmd命令行下切换目录
  18. C/C++笔试题(11)
  19. Linux下的Html编辑器
  20. 怎么下载地质图、专题图等其它专业地图

热门文章

  1. RAC Concept
  2. MyEclipse设置像visual studio一样的智能提示
  3. 【c++】【转】c++中的explicit关键字
  4. 以大多数人的努力程度之低,根本轮不到去拼天赋
  5. 一段始终保持在最底部的div css代码
  6. C#事件-自定义事件
  7. 区分Activity的四种加载模式(转)
  8. 元组字典集合内置方法与拷贝
  9. 《Forward团队-爬虫豆瓣top250项目-设计文档》
  10. 点击链接,执行.py脚本,cgi脚本,浏览器中没有显示解析后的web页面,而是.py文件本身的代码内容...