还是前段时间写的《DWR使用手记》那是在第一次使用DWR时写的一些总结,对DWR做了一个大体的结构性的介绍,主是代码结构。文章链接在这:http://blog.csdn.net/fly29/archive/2006/03/01/613289.aspx
在这中间,经历了换公司,然后被公司发配出差到现场维护,开发一些新需求,所以没能把中间一些开发经验总结予以分享,明天开始再一一总结吧,也算是对前段时间工作的一个总结吧。
目前DWR已经升到2.0,也没能及时了解其最新特性。DWR总的来讲,是一个很好的框架,可以把js---java连接起来,方便在页面中直接调用java类中方法。这其中起最大作用的当然是bsf框架,也是apache的一个开源框架。通过在dwr.xml中进行配置也可以把javascript中的对象与java类中的model(或者叫domain对象进行转换),前几天在写代码时用到了这点,写个例子放在这。
/* 声明一个javascript对象 */
function book(name,author){
this.name=name;
this.author=author;
}
this.name=name;
this.author=author;
}
//写个类供页面中js调用BookTool
public class BookUtils{
public void addBook(Book book) {
//invoke business layer
}
}
//domain
public class Book {
private String name;
private String author;
//getter & setter here
}
public class BookUtils{
public void addBook(Book book) {
//invoke business layer
}
}
//domain
public class Book {
private String name;
private String author;
//getter & setter here
}
这样在页面中,声明了一个book变量,直接调用BookTool的addBook(Book b)方法即可完成操作。例:
<script language="javascript">
function add() {
var b = new book("think in java","bruce");
BookUtils.addBook(b);
}
</script>
当然在页面顶部要加上:
<script type='text/javascript' src='dwr/interface/BookUtils.js'></script>
也要在dwr.xml中加上
<create creator="new" javascript="BookUtils">
<param name="class" value="com.test.BookTool" />
</create>
其实从上面我们可以看出,每次调用类BookTool是new一个新的对象,因此完全可以在class BookTool中把Book的所有属性加进去,即可以是这样:
function add() {
var b = new book("think in java","bruce");
BookUtils.addBook(b);
}
</script>
当然在页面顶部要加上:
<script type='text/javascript' src='dwr/interface/BookUtils.js'></script>
也要在dwr.xml中加上
<create creator="new" javascript="BookUtils">
<param name="class" value="com.test.BookTool" />
</create>
其实从上面我们可以看出,每次调用类BookTool是new一个新的对象,因此完全可以在class BookTool中把Book的所有属性加进去,即可以是这样:
public class BookUtils {
private String name;
private String author;
//getter & setter
public void addBook(Book b) {
// do sth
}
}
这样可以在页面中直接修改BookUtils的属性,然后调用其方法即可。不过为了更好使用OO,所以还是建议把域对象独立出来。
以上纯属个人拙见,期待与您交流。
QQ:236306746