从事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