by agate - Published: 2007-07-21 [9:36 下午] - Category: 程序编码

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 中文文档

Tags: [ , , ] - Comments: View Comments
blog comments powered by Disqus