您的位置:首页 > 编程语言 > Java开发

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

2016-05-06 09:48 453 查看
从事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");


是不是挺有意思呢?你也来试试吧!

原创:http://blog.csdn.net/qilin001cs

jsframe启蒙源码:

http://pan.baidu.com/s/1slI3AbF
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java