dwr 基本应用
DWR介绍
What is DWR?:
1.在服务器上运行的Servlet来处理请求并把结果返回浏览器。
2.运行在浏览器上的Javascript,可以发送请求,并动态 改变页面。DWR会根据你的Java类动态的生成Javascript代码。这些代码魔力是让你感觉整个Ajax调用都是在浏览器上发生的,但事实上是服务器执行了这些代码,DWR负责数据的传递和转换。
3.这种Java和Javascript之间的远程调用会让DWR用户感觉像是曾经习惯使用的RMI或SOAP的RPC机制。而且这一过程还不需要额外的浏览器插件。
4.Java是同步的,而Ajax是异步的。所以当你调用一个远程方法时,你要给DWR一个回调函数,当数据从网络上回来时,DWR会调用这个函数。
DWR的作用:
1.有效地从应用程序代码中把 Ajax 的全部请求-响应循环消除掉。
2.客户端代码再也不需要直接处理XMLHttpRequest 对象或者服务器的响应。
3.不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML。
4.不再需要编写 servlet 代码把 Ajax 请求调整成对 Java 域对象的调用
DWR原理
DWR是作为Web应用的一个Servlet进行部 署的,是一个黑盒子中的servlet。
对于公共有的每个类,DWR 动态地生成包含在 Web 页面中的 JavaScript。生成的JavaScript 包含存根函数,代表 Java 类上的 对应方法并在幕后执行XMLHttpRequest。这些请求被发送给DWR。
把请求翻译成服务器端 Java 对象上的方法调用并把方法的返回值放在servlet 响应中发送回客户端,编码成 JavaScript。
写几个例子: 部署在TOMCAT上,下载附件中的工程,直接可以再TOMCat上跑
?
test.jsp?
?
???
?
列子包含:
1.异步从服务器返回一个自定义的对象
2.从异步从服务器返回一个list,其中包含自定义的对象
3.给客户端的调用设置局部超时时间
4.客户端异常处理
5.客户端给远程方法传递入参
6.动态跟新下拉列表
7.动态生成 表格(有点问题,报js错误)8.翻转ajax 就是 后台的函数调用前台JS,也就是页面上的回调函数在调用前台页面上的另一个js(方式1)
9.翻转ajax测试,就是js->请求后台一个函数->后台函数动态创建前台页面上的JS函数,并调用
10.翻转ajax 就是 后台的函数调用前台JS,也就是页面上的回调函数在调用前台页面上的另一个js(方式2)?
11.dwr 拦截器测试
?
后期补充:没在提供的文档里
?
12. 如果前台dwr需要调用后台的一个业务方法,这个业务方法需要一个对象作为方法的参数,我们可以这么做
?
比如后台有个方法? public List<SysDict> querySysDict(SysDict dict)?
?
首先配置
?
<convert match="cn.com.xinli.esup.beans.sys.SysDict" javascript="SysDict" converter="bean"></convert>??
?
前台就可以这样王后台传递对象
?/*异步添加消费类型*/
?function getConsumerType()
?{
??var sd=new SysDict();
??sd.itemName='消费终端';
??JSDWRQuery.querySysDict(sd,function(msg)
??{
???
???DWRUtil.removeAllOptions("consumeType");
???DWRUtil.addOptions("consumeType",msg,'itemId','itemName');
???DWRUtil.addOptions( "consumeType", ['查询全部']);
??});??
?}?