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

从事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");

jsframe启蒙源码:
http://pan.baidu.com/s/1slI3AbF

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值