DWR作为快速简洁的java平台ajax开发框架,越来越受到javaweb网页制作人员的重视了,特别是对于不熟悉ajax内部实现过程的web展现层部分的工作人员来说, DWR让这些人员避开了直接使用ajax的枯燥javascript进行编程,也脱离了使用类似google现成框架的学习周期,很简单的就可以让会写java程序的人员跑上ajax。
今天用了老师的DWR教学程序看了一下实现过程,惊奇的发现DWR的实现异常的简单,特别在观察整个配置以及java逻辑类的编写的时候发现DWR的思想十分的聪明(可以说是精妙,因为没有接触过spring,传说spring也是如此):
package cn.agate.demo.ajax.dwr;
public class HelloDWR {
public String sayHello(String name) {
if(name.equals("aaa")) {
return "has been registed";
} else {
return "hasn't been registed";
}
}
}
看看是不是简单到不能再简单了呢?虽说是dwr-ajax的逻辑类,但是根本没有导入任何的包,或者是写任何的附加代码,完完整整的都是需要的代码,没有多余的东西。接下来你只要:
1.配置web.xml加入一下servlet配置
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
2.在WEB-INF下建立一个dwr.xml
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="HelloDWR" scope="page">
<param name="class" value="cn.agate.demo.ajax.dwr.HelloDWR"/>
</create>
</allow>
</dwr>
3.在你调用ajax的网页里加入
<script type='text/javascript' src='dwr/interface/HelloDWR.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<!-- 上面这两个js脚本导入你不用管他 -->
<!-- 只要知道一个是必须的:engine.js -->
<!-- 另一个就是dwr帮你生成的那个对应java文件的js -->
<script type="text/javascript">
function a() {
name=document.frm.name.value;
HelloDWR.sayHello(name,myTest);
//注意这个方法哦!!!
//是不是很好玩?我们只有一个参数,他却输入了两个参数?
//其实第一个才是我们的参数,但是由于异步,需要用到回调函数,就是那个myTest
//这个回调函数不用写括号,他获得的就是我们java那个函数返回的!
}
function myTest(str) {
document.getElementById("msg").innerHTML=str;
//这个就是我们用的那个回调函数,用我们java方法换回的值动态的输出到页面上
}
</script>
<form name="frm">
<input type="text" name="name" />
<input type="button" value="check!" onclick="javascript:a()" />
</form>
<font id="msg" color="red"></font>
呵呵,这就是你要做的全部!!!简单吧?无语……(别忘了导入dwr的包哦!)
(注:这个javascript的回调函数是关键,也是神奇的地方!)
附上几个DWR学习网站:
1.DWR Home Page
2.DWR 中文文档


