Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 366|回复: 0

[Java基础知识]易变业务使用脚本语言编写

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-9-30 17:41:18 | 显示全部楼层 |阅读模式




    1. package com.company;
    2. import java.io.FileReader;
    3. import java.util.Scanner;
    4. import javax.script.Bindings;
    5. import javax.script.Invocable;
    6. import javax.script.ScriptContext;
    7. import javax.script.ScriptEngine;
    8. import javax.script.ScriptEngineManager;
    9. /**
    10. *
    11. * 使用内置的脚本语言
    12. *
    13. */
    14. public class Client {
    15.         public static void main(String[] args) throws Exception {               
    16.                 //获得一个javascript的执行引擎
    17.                 ScriptEngine engine=new ScriptEngineManager().getEngineByName("javascript");
    18.                 //建立上下文变量
    19.                 Bindings bind=engine.createBindings();
    20.                 bind.put("factor", 1);
    21.                 //绑定上下文,作用域是当前引擎范围
    22.                 engine.setBindings(bind,ScriptContext.ENGINE_SCOPE);
    23.                 Scanner input = new Scanner(System.in);
    24.                 while(input.hasNextInt()){
    25.                         int first = input.nextInt();
    26.                         int sec = input.nextInt();
    27.                         System.out.println("输入参数是:"+first+","+sec);
    28.                         //执行js代码
    29.                         engine.eval(new FileReader("c:/model.js"));
    30.                         //是否可调用方法
    31.                         if(engine instanceof Invocable){       
    32.                                 Invocable in=(Invocable)engine;
    33.                                 //执行js中的函数
    34.                                 Double result = (Double)in.invokeFunction("formula",first,sec);
    35.                                 System.out.println("运算结果:"+result.intValue());
    36.                         }
    37.                 }       
    38.         }
    39. }
    复制代码
    上面代码使用Scanner类接受键盘输入两个数字,然后调用javaScript脚本的formula函数计算其结果, 注意,除非输入了一个非int数字,否则当前JVM会一直运行,这也是模拟生产系统的在线变更状况,运行结果如下:

    输入参数是:1,2
    运行结果:3 些时,保持JVM的运行状态,我们修改一下formula函数,代码如下:  function formula(var1,var2){
    return var1+var2-factor;
    } 其中,乘号变成了减号,计算公式发生了重大改变。回到JVM中继续输入,运行结果如下: 输入参数是:1,2
    运行结果:2
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-20 17:04 , Processed in 0.388424 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表