常用proxy之MemoryProxy
MemoryProxy只能从JavaScript对象获得数据,可以直接把数组,或JSON和XML格式的数据交给它处理,如下面的代码所示。
-
var proxy = new Ext.data.MemoryProxy([
-
['id1','name1','descn1'],
-
['id2','name2','descn2']
-
]);
常用proxy之HttpProxy
HttpProxy使用HTTP协议,通过Ajax去后台取数据,构造它时需要设置参数。
这里的url可以替换成任何一个合法的网址,这样HttpProxy才知道去哪里获取数据,如下面的代码所示。
- var proxy = new Ext.data.HttpProxy({url:'xxx.jsp'});
后台需要返回EXT所需要的JSON格式的数据,下面的内容就是后台使用JSP的一个范例,如下面的代码所示。
-
response.setContentType("application/x-json");
-
Writer out = response.getWriter();
-
out.print("[" +
-
"['id1','name1','descn1']" +
-
"['id2','name2','descn2']" +
-
"]");
请注意,这里的HttpProxy不支持跨域,它只能从同一域中获得数据。如果想跨域,请参考下面的ScriptTagProxy。
常用proxy之ScriptTagProxy
ScriptTagProxy的用法几乎和HttpProxy一样,如下面的代码所示。
- var proxy = new Ext.data.ScriptTagProxy({url:'xxx.jsp'});
从这里也看不出来它是如何支持跨域的,我们还需要在后台进行相应的处理,如下面的代码所示。
-
String cb = request.getParameter("callback");
-
response.setContentType("text/javascript");
-
Writer out = response.getWriter();
-
out.write(cb + "(");
-
out.print("[" +
-
"['id1','name1','descn1']" +
-
"['id2','name2','descn2']" +
-
"]");
-
out.write(");");
其中的关键就在于从请求中获得的callback参数,这个参数叫做回调函数。
Proxy会在当前的HTML页面里添加一个标签,然后把后台返回的内容添加到这个标签中这样就可以解决跨域访问数据的问题。
为了让后台返回的内容可以在动态生成的标签中运行,EXT会生成一个名为callback的回调函数,
并把回调函数的名称传递给后台,由后台生成callback(data)形式的响应内容,然后返回给前台自动运行。
虽然上述处理过程比较难理解,但是我们只需要了解ScriptTagProxy的用法就足够了。
如果还想进一步了解ScriptTagProxy的运行过程,可以使用Firebug查看动态生成的HTML以及响应的JSON内容。
最后我们来分析一下EXT的API文档中提供的示例,这段后台代码会自动判断请求的类型,
返回支持ScriptTagProxy或HttpProxy的数据,如代码清单10-2所示。
代码清单 在后台同时支持HttpProxy和ScriptTagProxy
-
boolean scriptTag = false;
-
String cb = request.getParameter("callback");
-
-
if (cb != null) {
-
scriptTag = true;
-
response.setContentType("text/javascript");
-
} else {
-
response.setContentType("application/x-json");
-
}
-
-
Writer out = response.getWriter();
-
if (scriptTag) {
-
out.write(cb + "(");
-
-
}
-
-
out.print(dataBlock.toJsonString());
-
-
if (scriptTag) {
-
out.write(");");
-
}
代码中通过判断请求中是否包含callback参数来决定返回何种数据类型。
如果包含,就返回ScriptTagProxy需要的数据;否则,就当作HttpProxy处理。
分享到:
相关推荐
包括下列常用插件: adblock_plus-2.2.3-tb+an+sm+fx.xpi autoproxy-0.4b2.2011041023-fx+tb+sm.xpi betterprivacy-1.68-fx.xpi email_notifier-0.6.2-fx.xpi feedly-10.2-fx.xpi firebug-1.11.2-fx.xpi foxdie-15-...
package org.sg.sgg.mode.proxy.jdkProxy.trendProxy2; /** * java JDK实现动态代理 * @author * */ public class Test2 { public static void main(String[] args) { UserService userService = new ...
9.HttpProxy.java 代理设置 10.CaptureScreen.java 截取桌面 11.XmlReaer.java 读写xml文件 12.ArrayConvers.java 数组与map/list的转换 13.NumberCalc.java 对数字进行操作 14.ServerConn.java与ClientConn 先运行...
教你学会几种常用的密码破解法教你学会几种常用的密码破解法教你学会几种常用的密码破解法
NHibernate.dll NHibernate.ByteCode.Castle.dll NHibernate.ByteCode.Castle.dll Castle.Core.dll Castle.DynamicProxy2.dll Antlr3.Runtime.dll log4net.dll Iesi.Collections.dl NHibernate.cst
10.5 常用proxy.............................................239 10.5.1 MemoryProxy.........................239 10.5.2 HttpProxy..............................240 10.5.3 ScriptTagProxy.....................
第 5 章 定制控件 ................ 152 5.1. 扩展系统控件 ............................... 152 5.1.1. 原理分析 .............................. 152 5.1.2. 示例分析 .............................. 153 5.1.3....
####Nginx proxy代理网站常用优化配置如文件,将配置写入新文件,放在路径 /etc/nginx/proxy_params,调用时使用include引用即可####
一款很好用的代理软件。 提供常用常见软件下载,小巧实用的小软件、小工具, 热门必备精品软件等,为尽可能的方便用户使用,软 件多为免费软件或绿色版,并附上原创的软件体验心 得及介绍。
02.Nginx常用模块 03.Nginx提供静态资源WEB服务 04.Nginx提供代理服务 05.Nginx提供负载均衡 06.Nginx提供ProxyCache缓存服务 07.Nginx Rewrite跳转规则与实践 08.Nginx构建Https加密传输网站 09.Nginx构建动态网站...
解决微信公众号网页授权域名只能设置两个问题。选中其他一个作为常用域名,并在该域名站点下部署该授权代理文件,其他域名都可以用该站点来代理授权登录。
U8 API是官方三大接口方式中...工作流基于UFIDA.U8.Audit.ServiceProxy.dll 库来代理实现,可以实现常用的单据审核开启,提交流程,审核,弃审等常规操作。 注意:bin下相关dll为U8的16.0版本,其它版本酌情替换即可。
javaEE javaweb常用jar包 , 亲测可用,下载后导入到java工程中使用。
javaEE javaweb常用jar包 , 亲测可用,下载后导入到java工程中使用。
javaEE javaweb常用jar包 , 亲测可用,下载后导入到java工程中使用。
ftp是liunx下常用的软件之一。 1.将用户切换到root:su - ; 2.检查机器是否已经安装了ftp:rpm -qa|grep vsftpd; 如果没有返回任何结果,表示没有安装;如果返回文件包名,这表示已经安装了该服务; 3.开始安装:...
7.2.5 使用ajax处理数据的代理:ext.data.proxy.ajax与ext.data.proxy.rest / 308 7.2.6 跨域处理数据的代理:ext.data.proxy.jsonp / 312 7.2.7 为ext.direct服务的代理:ext.data.proxy.direct / 312 7.2.8 ...
一个比fiddler更好用的抓包工具,其常用功能如下: (1)截取Http 和 Https 网络封包。 (2)支持重发网络请求,方便后端调试。 (3)支持修改网络请求参数。 (4)支持网络请求的截获并动态修改。 (5)支持模拟...