浏览 4851 次
锁定老帖子 主题:关于 server javascript
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-08-03
根据ruby 的一些灵感吧。基于javascript 写了一个这样子的开发框架。请大家给点评论,看看有没有继续的可能。 /** * index 该文件的默认函数 * 如访问 http://host:port/content/vega/{fileprefix} * 默认执行 index 函数 * 如访问 http://host:port/content/vega/{fileprefix}/{somefunction} * 则执行相应的 somefunction :{e.g http://localhost:8080/bbs/demo/insert 则执行 demo.js 文件中的 insert 函数} * */ /* * 查询该表下的指定字段为 account.find(["c1","c2","c3"]);; 参数为 Array 包涵列数组 * 根据条件查询 : account.find(["c1","c2","c3"], clause);; 参数1指定列,参数2为Clause对象 * 翻页查询: account.find(["c1","c2","c3"], clause, page);; 参数1指定列,参数2为Clause对象 参数3为Page对象 * */ function index();{ require("/DataSource.js");;//引入数据库访问类 vega.log.info(vega.request.id); var account = new Table('account', vega.getComponent("bbs"););;//初始化数据库表对象,参数1为 数据库表名,参数2为 DataSource var result = account.find();;//得到当前表对象中的所有字段的所有数据 vega.saveValue({result:result});;//保存结查 转发到默认的view 层 /view/ajax/index.vm 中 如果想改变其显示的view层 : vega.sendPage("/aaa/view.vm",{result:result});; } function findColumn();{ require("/DataSource.js");;//引入数据库访问类 var account = new Table('account', vega.getComponent("bbs"););;//初始化数据库表对象,参数1为 数据库表名,参数2为 DataSource var result = account.find(["userid","firstname","lastname"]);; vega.saveValue({result:result});; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-08-03
这是javascript吧。
|
|
返回顶楼 | |
发表时间:2006-08-03
不好意思。我以为被删除了。
多谢管理员 是用js的语法来完成后台的业务逻辑 因为现在AJAX应用很广,javascript现在也被很多人接受 我的目的是想 client js<==(request response)==>server js |
|
返回顶楼 | |
发表时间:2006-08-03
如果抛弃了DAO层,java一样可以阿。不就是 充血PO吗。
偶这几天也看ROR的东西。 用中庸这个词很是贴切。 要简单,就要舍弃一些东西。 但脚本语言带来的好处不是java.c#可以解决的。 |
|
返回顶楼 | |
发表时间:2006-08-03
http://rubytao.com/news/replicant-0-2-released/
|
|
返回顶楼 | |
发表时间:2006-08-04
介绍下我们的框架吧。我们的mvc框架式自己开发的,充分利用js脚本功能,并辅以java的反射机制,做到了浏览器和web服务器自动交换实体的功能。感兴趣的话,看下面的代码:
window.onload = function();{ ... var grid = new SigmaList();; document.all.userList.appendChild(grid.getElement(););; var columns = [ {name:"name",caption:"姓名",mode:"string",width:100}, {name:"loginName",caption:"登录名",mode:"string",width:120}, {name:"age",caption:"年龄",mode:"number",width:40,format:"#"} ]; grid.setContext({ sequence:true,checkBox:true,readonly:true });; grid.bindHeader(columns);; //把表格列和实体属性名邦定 grid.bindData([]);; listUsers();; } function listUsers();{ var url = "user!getUsers.action"; var request = new AjaxRequest("post",url,true);; request.onresult = function();{ var r = request.getValue();; grid.bindData(r.users);; //绑定实体(由框架自动把java实体序列化到js实体了);集合 } request.send();; } action中的代码: public String getUsers();{ List list = Global.getUserService();.getAll();; this.result.put("users",list);; return null; } 程序员可以不必编写任何从java实体到js实体转换的代码。框架自动完成了。以上代码展示了从服务器端获取实体并展示出来的过程。我们再看一段从浏览器提交,直到服务器端获取实体的过程。 客户端代码: var sform = null; window.onload = function();{ sform = new SigmaForm();; sform.bindFormById("userForm");; /*用自定义的SigmaForm包装浏览器的Form对象。SigmaForm除了自动设置获取对象属性外,还可以根据属性类型提供编辑器*/ } function saveUser();{ var user = sform.getValue();; /*用SigmaForm对象获得js形式的实体,用字符串来表达这个实体可能是这个样子的: {name:"xxxx",age:22,loginName:"yyyyy"} */ var r = new AjaxRequest("post","user!save.action",true);; r.setParameter("user",toString(user););; //把实体变成字符串作为ajax请求的参数。 r.onresult = function();{ var result = r.getValue();; if(result.exception!=null);{ alert(result.exception);; }else{ window.returnValue = "relist"; window.close();; } } r.send(null);; } 服务器端代码: public String save();{ User user = (User); this.parameters.getValue("user",User.class);; //获得java形式的实体 if(user.getId();==null); Global.getUserService();.create(user);; else Global.getUserService();.update(user);; return null; } 不知道这样的ajax框架能否满足部分jers的期望呢? |
|
返回顶楼 | |
发表时间:2006-08-04
qiaolu 写道 不好意思。我以为被删除了。
多谢管理员 是用js的语法来完成后台的业务逻辑 因为现在AJAX应用很广,javascript现在也被很多人接受 我的目的是想 client js<==(request response)==>server js 这样的开发框架已经有了 可以参考cocoon |
|
返回顶楼 | |
发表时间:2006-08-04
我只所以弄个个较为简单的小框架,主要是受了rails 的影响,
webapp/controllers/这里有不同的js 一个js为一个 controller 每一个function 处理一个请求 webapp/views/{controller name}/这里是velocity vm 开发者只需要 开发不同的function , 和views跟function名子对应的.vm就行了 |
|
返回顶楼 | |