Atitit.ati dwr的原理and设计 attilax 总结 java php 版本
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本
1. dwr的优点相对于ajax来说。。
dwr是构建在ajax上的。。更加的dsl化。。
大大简化了编写ajax的工作量。
2. DWR工作原理
是通过动态把Java类生成为Javascript。它的代码就像Ajax一样,你感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端,DWR负责数据的传递和转换。这种从Java 到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。
Java从根本上讲是同步机制,然 AJAX却是异步的。所以你调用远程方法时,当数据已经从网络上返回的时候,你要提供有反调 (callback) 功能的DWR。
DWR在客户端放置了一个 engine.js作为客户端的引擎,在Server端放置了一个dwr.jar作为服务器端的引擎。
然后,可以以RPC的方式来描述
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
3. Dwr的架构
Dwr>>ajax>>>api.jsp
4. 自定义dwr还是native dwr
Native dwr要修正配置文件了.麻烦的..自定义dwr好使用的..
5. ApiHandler的标准化method
Sql
Select... $meta{“table”,orderby}, f1,f2
Update/insert/merger ....$meta{“table”} ,f1----f12
Delete....$meta{“table”} ,f1----f12 (where)
6. Invok.. Dwr.exe()
var mp={"method":"sql","param":"select * from wxb_news where news_id="+UrlParm.parm('news_id')};
dwrC.exec(mp,function($data){
jo=str2json($data);
arr=jo;
$("#table1_tmpl").tmpl(arr).appendTo('#table1');
$("#table1_tmpl").hide();
},$app_path);
7. api.jsp
* localhost:8080/wxb/api.jsp?method=sql¶m=select * from wxb_news
8. prj.Wxb distribu api.jsp
<%@page import="com.attilax.api.HandlerChain"%>
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" %>
<%@page import="com.attilax.api.HandlerChain"%>
<%@page import="com.attilax.api.ApiHandler"%>
<%@page import="aaaCfg.IocX"%>
<%
if(request.getParameter("method")!=null)
{
}
%>
<%
ApiHandler ax = IocX.getBean(ApiHandler.class);
%>
<%=ax.handleReq_dsl(request)%>
9. ----------code
10. ApiHandler
@Inject
DBX dbx;
public ApiHandler() {
this.reg("sql", new Handler() {
@Override
public Object handleReq(Object arg) throws Exception {
// attilax 老哇的爪子 l_43_u o87
HttpServletRequest req=(HttpServletRequest) arg;
List li = dbx.findBySql(req.getParameter("param"));
return core.toJsonStrO88(li);
}
});
public String handleReq_dsl(HttpServletRequest req) {
String meth=req.getParameter("method");
Handler hd=(Handler) mp.get(meth);
try {
return (String) hd.handleReq(req);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return meth;
}
11. iocx
bd.bind(DBX.class).toProvider(new Provider<DBX>() {
@Override
public DBX get() {
DataSource ds = (DataSource) SpringUtil
.getBean("dataSource");
try {
return new DbutilX(ds.getConnection());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
});
12. 参考
atitit.php中的dwr 设计模式 - attilax的专栏 - 博客频道 - CSDN.NET.html
Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php - attilax的专栏 - 博客频道 - CSDN.NET.html
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本的更多相关文章
- Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号 1. dwr的长处相对于ajax来说.. 1 2. DWR工作原理 1 3. Dwr的架构 2 4. 自己 ...
- Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 ...
- atitit. web组件化原理与设计
atitit. web组件化原理与设计 1. Web Components提供了一种组件化的推荐方式,具体来说,就是:1 2. 组件化的本质目的并不一定是要为了可复用,而是提升可维护性. 不具有复用 ...
- atitit.atiOrmStoreService 框架的原理与设计 part1 概述与新特性
atitit.atiOrmStoreService 框架的原理与设计 part1 概述与新特性 1. 新特性如下 支持生成sql在无数据库连接的情况下 2. Orm设计 主要的俩个以来service ...
- Atitit.异步编程技术原理与实践attilax总结
Atitit.异步编程技术原理与实践attilax总结 1. 俩种实现模式 类库方式,以及语言方式,java futuretask ,c# await1 2. 事件(中断)机制1 3. Await 模 ...
- Atitit 修改密码的功能流程设计 attilax总结
Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...
- Atitit.图片木马的原理与防范 attilax 总结
Atitit.图片木马的原理与防范 attilax 总结 1.1. 像图片的木马桌面程序1 1.2. Web 服务端图片木马1 1.3. 利用了Windows的漏洞1 1.4. 这些漏洞不止Windo ...
- Java:HashMap原理与设计缘由
前言 Java中使用最多的数据结构基本就是ArrayList和HashMap,HashMap的原理也常常出现在各种面试题中,本文就HashMap的设计与设计缘由作出一一讲解,并解答面试常见的一些问题. ...
- Atitit ati licenseService 设计原理
Atitit ati licenseService 设计原理 C:\0workspace\AtiPlatf\src_atibrow\com\attilax\license\LicenseX.ja ...
随机推荐
- Android关于JSON数据解析
一.什么是json json(Javascript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以 ...
- java反序列号漏洞分析资料汇总,待研究
https://blog.chaitin.cn/2015-11-11_java_unserialize_rce/ http://blog.nsfocus.net/?s=fastjson http:// ...
- linux之misc及使用misc创建字符设备
1:linux字符设备及udev 1.1字符设备 字符设备就是:一个一个字节来进行访问的,不能对字符设备进行随机读写.简单字符设备创建实例如下: #include <linux/module.h ...
- Vuex内容解析和vue cli项目中使用状态管理模式Vuex
中文文档:vuex官方中文网站 一.vuex里面都有些什么内容? const store = new Vuex.Store({ state: { name: 'weish', age: }, gett ...
- 理解Flow静态类型检查
一.为什么在JavaScript中使用静态类型 了解静态类型的最快方法是将其与动态类型进行对比. 有静态类型参数的语言被称为静态类型语言. 另一方面,有动态类型参数的语言被称为动态类型语言.核心区别是 ...
- LeetCode OJ Minimum Depth of Binary Tree 递归求解
题目URL:https://leetcode.com/problems/minimum-depth-of-binary-tree/ 111. Minimum Depth of Binary T ...
- Android-标题状态栏的隐藏
以下有两种方法,建议使用第一种方法:使用第一种方法,仅仅只需要在Manifest.xml文件中进行一行的配置就行了而且Activity在启动的时候也不会看到那个Title栏第一种方法:在配置文件中进行 ...
- PHP Variable Scope
原文: https://phppot.com/php/variable-scope-in-php/ Last modified on March 24th, 2017 by Vincy. ------ ...
- poj 2778 AC自己主动机 + 矩阵高速幂
// poj 2778 AC自己主动机 + 矩阵高速幂 // // 题目链接: // // http://poj.org/problem?id=2778 // // 解题思路: // // 建立AC自 ...
- 【甘道夫】Win7环境下Eclipse连接Hadoop2.2.0
准备: 确保hadoop2.2.0集群正常执行 1.eclipse中建立javaproject,导入hadoop2.2.0相关jar包 2.在src根文件夹下拷入log4j.properties,通过 ...