码迷,mamicode.com
首页 > 编程语言 > 详细

当js运行在java上,会有那些令人惊喜的表现呢!

时间:2016-05-06 12:13:36      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

从事JAVA开发3年了,对java的了解算不上很深入!期间也接触了其他的语言,包括php,Nodejs,Expressjs等语言,让我感触比较深的就是变量的定义,在java中,字符串要用String a;数字要用 int a;小数用 float a; 或者double a; 而php中$a即可定义所有类型的变量,Nodejs和Expressjs中使用var a即可定义所有类型的变量,这里你可能说了java更严谨,而且java也能使用Object a来定义所有变量啊!在java中我相信对于定义一个数字int a=4;而没有人写成Object a =4。

  • 如果js跑在java上?
    1.变量定义可以var a来统一所有的对象和变量的定义规则
    2.对象声明变成 var b = {name:”zhangsan”,age:14};
    3.当js代码发生改变的时候,代码能立马被解释执行,而不用再重新编译java类
    4.可以使用函数式对象 var c = function(){ return d;}
    5.js可调用java类方法或属性
    6.如何使用的是NoSQL数据库可直接对 对象操作!

  • 下面来说说如何让js跑在java上
    1.让java可以解释js —–>rhino这个东西可以来解释js
    2.JAVA基础调用代码如下
public static void main(String args[]){
 ScriptEngine js = new ScriptEngineManager().getEngineByName("javascript");
        Bindings bindings= js.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("java_out", System.out);
js.eval("var a=‘hello‘;java_out.println(a);");
}

  • 下面让js来实现java web工程的基础框架实现
    目录结构如下
    技术分享
    当用户访问 http://localhost:8080/xxx/js/index的时候 JsAction会把请求转发到WEB-INF下的index.js文件
    JsAction代码如下
public class JsAction extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {  
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ScriptEngine js = new ScriptEngineManager().getEngineByName("javascript");
        Bindings bindings= js.getBindings(ScriptContext.ENGINE_SCOPE);
        bindings.put("java_out", System.out);
        bindings.put("java_request", request);
        bindings.put("java_response", response);
        BaseDao dao = new BaseDao();
        bindings.put("java_dao", dao);
        Extension ext = new Extension(request,response,js);
        bindings.put("java_ext", ext);
        loadjs(request, js);
    }
    private void loadjs(HttpServletRequest request,ScriptEngine js){
        try {
            String path = request.getSession().getServletContext().getRealPath("/"); //获取系统路径
            String f = request.getRequestURI().replace(request.getContextPath(), "")+".js";
            System.err.println("request -> "+f);
            js.eval(new BufferedReader(new InputStreamReader(new FileInputStream(new File(path+"WEB-INF/"+f)),"utf-8")));
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

index.js代码如下

java_ext.include("js/config.js");
//json
var obj ={name:"zhangsan",age:"21",sex:"男"};
java_out.println(obj.age);
//put or get
java_ext.put("sex",obj.sex);
java_out.println(java_ext.get("sex"));
//db op
//demo1
var list=java_dao.query("select * from vip limit 0,10",[]);
var map = list.get(0);
java_out.println(map.get("address"));
//demo2
var listcount = java_dao.query("select count(*) as c from vip",[]);
var count = listcount.get(0).get("c");
java_out.println(count);
//demo3
var id=java_dao.execute("insert into test2 (code) values (?)",["nihao"]);
java_out.println(id);
//demo4
var bool = java_dao.transaction(["insert into test2 (code) values (‘zhangsan‘)","insert into test2 (code) values (‘lisi‘)"])
java_out.println(bool);
//go to tpl
java_ext.load("../tpl/index.jsp");

当js运行在java上,会有那些令人惊喜的表现呢!

标签:

原文地址:http://blog.csdn.net/qilin001cs/article/details/51328811

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!