Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号
Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号
1
1. dwr的长处相对于ajax来说。。
dwr是构建在ajax上的。。更加的dsl化。。
大大简化了编写ajax的工作量。
2. DWR工作原理
是通过动态把Java类生成为Javascript。它的代码就像Ajax一样。你感觉调用就像发生在浏览器端,可是实际上代码调用发生在server端。DWR负责数据的传递和转换。这样的从Java 到JavaScript的远程调用功能的方式使DWR用起来有种很像RMI或者SOAP的常规RPC机制,并且DWR的长处在于不须要不论什么的网页浏览器插件就能执行在网页上。
Java从根本上讲是同步机制,然 AJAX却是异步的。所以你调用远程方法时,当数据已经从网络上返回的时候。你要提供有反调 (callback) 功能的DWR。
DWR在client放置了一个 engine.js作为client的引擎,在Server端放置了一个dwr.jar作为server端的引擎。
然后,能够以RPC的方式来描写叙述
作者:: 老哇的爪子 Attilax 艾龙。 EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/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. 自定义dwr ...
- atitit.木马病毒webshell的原理and设计 java c# .net php.
atitit.木马病毒webshell的原理and设计 java c# .net php. 1. 隐蔽性 编辑 WebShell后门具有隐蔽性,一般有隐藏在正常文件中并修改文件时间达到隐蔽的,还有利用 ...
- Atitit.面向接口的web 原理与设计重写 路由启动绑定配置url router rewriting urlpage mvc mvp的 java c#.net php js
Atitit.面向接口的web 原理与设计重写 路由启动绑定配置url router rewriting urlpage mvc mvp的 java c#.net php js 原理 通过vm带入启 ...
- Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...
- Atitit ati licenseService 设计原理
Atitit ati licenseService 设计原理 C:\0workspace\AtiPlatf\src_atibrow\com\attilax\license\LicenseX.ja ...
- Atitit.木马病毒websql的原理跟个设计
Atitit.木马病毒websql的原理跟个设计 1. Keyword Wsql { var sql="select "+p.txt+" as t,"+p.v+ ...
- atitit.ajax上传文件的实现原理 与设计
atitit.ajax上传文件的实现原理 与设计 1. 上传文件的三大难题 1 1.1. 本地预览 1 1.2. 无刷新 1 1.3. 进度显示 1 2. 传统的html4 + ajax 是无法直 ...
- atitit. web组件化原理与设计
atitit. web组件化原理与设计 1. Web Components提供了一种组件化的推荐方式,具体来说,就是:1 2. 组件化的本质目的并不一定是要为了可复用,而是提升可维护性. 不具有复用 ...
- Atitit. 单列索引与多列索引 多个条件的查询原理与设计实现
Atitit. 单列索引与多列索引 多个条件的查询原理与设计实现 1. MySQL只能使用一个索引1 1.1. 最左前缀1 1.2. 从另一方面理解,它相当于我们创建了(firstname,last ...
随机推荐
- vue中scoped vs css modules
注意:此文是默认你已经具备scoped和css modules的相关基础知识,所以不做用法上的讲解. 在vue中,我们有两种方式可以定义css作用域,一种是scoped,另一种就是css module ...
- Codeforces Round #363 (Div. 2) B 暴力
Description You are given a description of a depot. It is a rectangular checkered field of n × m siz ...
- bzoj 2749 - 外星人
Description 给定一个数的标准分解\(N= \prod_{i=1}^n p_i^{q_i}\) 其中\(p_i \le 10^5, q_i \le 10^9\) 求最小的\(x\)使得\(\ ...
- 17.2.10 NOIP模拟赛 聪哥的工资
聪哥的工资 (money/money.in/money.out) 时限1000ms 内存256MB 题目描述 lwher: 了体验劳苦大众的生活,聪哥在暑假参加了打零工的活动,这个活动分为n个工作日, ...
- LOJ#2244. 「NOI2014」起床困难综合症
$n \leq 1e5$个位运算操作,$m \le 2^{30}$,问$0-m$中谁进行完所有操作值最大,输出这个最大值. cfA题难度?当送分题就不管了 and相当于几个位取0,or相当于几个位取1 ...
- Console.Write格式化输出
原文发布时间为:2009-03-02 -- 来源于本人的百度文章 [由搬家工具导入] C 或 c货币Console.Write("{0:C}", 2.5); //$2.50Co ...
- 自己写的页面加载进度条jquery插件
(function ($) { var progressId = "progress" + Math.round(Math.random() * 100) var progress ...
- 自定义的类型放入STL的set中,需要重载自定义类中的“<”符号(转)
在以前学习STL的时候,曾经学到过,如果要将自定义的类型放入到set中的话,就需要重载“<”符号,原因是set是一个有序的集合,集合会按照“<”比较的大小,默认按照从小到大的顺序排列.假设 ...
- LeetCode OJ-- Populating Next Right Pointers in Each Node
https://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node/ 二叉树遍历的变种:树的节点多了个next指针 ...
- 前端优化之Combo Handler
Combo Handler来合并CSS/JS文件 背景 Combo Handler是Yahoo!开发的一个Apache模块,它实现了开发人员简单方便地通过URL来合并JavaScript和CSS文件, ...