好早以前就使用过了这个开源的AJAX框架,今天写个文档来总结一下,昨天总结了Ejb2.0的简单用法,以后有时间就写写东西,加强下记忆,现在感觉忘性比记性大了,工作和生活都离不开Google了,想想那天要是不能上网了,杂整呀!
1.建立web工程目录结构
2.拷打dwr.jar到项目的lib目录下,添加到classpath下
3.在WEB-INF目录下的web.xml文件中加入dwr的配置
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="dwr">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>
4.前台js负责处理客户端请求,并呼叫 Java 对象的是 DWRServlet , DWR 其实也有些 Model 2 的味道,只是 View 的这一层比较弱,因为放到客户端的 JavaScript 应用程序中 … 我们做一个helloword的例子,使用前台的js函数呼叫后台的DWRServlet ,并把结果返回到前台界面上,这个过程整个都是异步的
5.前台界面上又两个文本输入诓,用户输入姓名和年龄后,交给后台的DWRServlet 处理,返回结果到前台界面的一个div上
6.先写后台DWRServlet
DWRTest.java
7.在dwr.xml中配置这个处理函数
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="MyTest" scope="application">
<param name="class" value="cn.com.xinli.test.DWRTest" />
</create>
</allow>
</dwr>
creator 设定为 new ,表示使用 DWRTest 的无参数建构子来生成对象, javascript 设定为 MyTest,表示客户端 JavaScript 程序可以使用 MyTest来呼叫对应的 cn.com.xinli.test.DWRTest物件。
8.写前台页面 test.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>DWR - Test Home</title>
<script type='text/javascript' src='dwr/interface/MyTest.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script language="javascript">
function hello()
{
var user = $('user').value;
var age = $('age').value;
MyTest.getMyName(user,age,callback);
}
function callback(msg)
{
DWRUtil.setValue('demo1', msg);
}
</script>
</head>
<body>
<h1>DWR Test Page</h1>
<input id="user" type="text" value='chenge'/>
<input id="age" type="text" value='25'/>
<input type='button' value='点击' onclick='hello();' />
<div id="demo1"></div>
</body>
</html>
注意:
a.上面的3个js必须要引入,他是dwr在内存中自动为我们生成的
b.在页面上可以是用 $('user').value; 的方式难道元素的值,类似于prototype.js的感觉
c.<script type='text/javascript' src='dwr/interface/MyTest.js'></script>
js的名字必须和dwr.xml声明的一致
处理过程:
当用户点击按钮的时候,将执行hello()js函数,这个函数内部接受两个参数姓名和年龄,把它传递到后台的DWRTest.java 中的public String getMyName(String name,String age)函数,这个函数在后台执行,返回一个结果到前台的 function callback(msg)js 函数,因此这个js函数必须有,然后使用DWRUtil.setValue('demo1', msg); 将结果设置到前台的div标签上!!
我们也可以在dwr的配置文件中 写下 ,将返回结果和一个javabean绑定,然后传递到前台
<convert match="cn.com.xinli.netb.ejb.init.bean.NewsBean" converter="bean"></convert>
DWRUtil 是个dwr很好的工具函数,可以上网看看它的使用方法,简化开发步骤!
还有一个问题,就是dwr的超时问题,我将线程挂起到200秒,结果依然能返回到前台,以前和晓伟做PET的时候,由于数据库操作时间过长,drw超时,前台拿不到后台的处理
近期学习计划:
1.在写一篇 JfreeChart的博客
2.国庆期间学习Ext
分享到:
相关推荐
很好的DWR2.0中文文档 深入浅出,通俗易懂, 学习dwr必备良书
DWR3.0.jar、DWR的实例war和DWR2.0中文说明文档
鄙视网上那些抄来抄去的,又不能用的垃圾 dwr2.0最简单例子实用亲测试
NULL 博文链接:https://liuzidong.iteye.com/blog/346042
作为一个java open source library,DWR可以帮助开发人员完成应用AJAX技术的web程序。它可以让浏览器上的javascript方法调用运行在web服务器上java方法。
dwr2.0中文文档.pdf dwr2.0中文文档.pdf dwr2.0中文文档.pdf
NULL 博文链接:https://yxwang0615.iteye.com/blog/979630
dwr2.0 spring 3.0 整合示例
DWR2.0 相关配置文件 DWR2.jar + DWR.xml + DWR2.0.dtd + Web.xml
Dwr2.0中文手册,详细的DWR API
dwr的入门实例,dwr2.0和3.0 jar包都有,可分别测试效果。用myeclipse important 项目,开启tomcat即可运行。
dwr2.0后台推送demo,包含第三方登陆,响应成功(是根据sessionID)做的判断。 内含dwr2.0.jar,js都在包里的不用另外找的
dwr 2.0 的 dtd 和官方网站首页 新鲜的,还热乎呢,回去好好用吧
资源名称:DWR 2.0中文文档 V0.9内容简介: Ajax向我们袭来的时候,很多写代码的程序员看到了Ajax的发展前景,但并不是每一个程序员都能将页面与代码完美整合在一起,DOM、CSS、javascript让人眼花缭乱,不知...
使用dwr2.0实现服务器推客户端(结合响应socket服务器推消息)
SSH+DWR2.0框架整合并实现Ajax.