1 DWR帮助我们将本地的JavaScript脚本函数调用转变成对远程Java对象函数的调用。在函数的调用过程中我们需要传递参数,这样我们就需要将本地的javascript变量转变成对应的java类型变量。这个就是Convertor的作用。DWR内部为我们编写了一些JAVA主要类型的Convertor.默认下面的数据类型会自动转换:boolean, byte, short, int, long, float, double, char, java.lang.Boolean, java.lang.Byte, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Float, java.lang.Double, java.lang.Character, java.math.BigInteger, java.math.BigDecimal and java.lang.String.但是假如我们有这样一个方法A.setB(B b),现在我们要在javascript脚本中调用该方法,我们需要传递java类型为B的参数,这个时候我们就需要配B配置Convertor.下面我们编写一个添加用户的简单程序:
 2 
 3 1、写一个用户信息Bean:UserBean,包含简单的userName,userPassword信息。
 4 
 5 2、写一个类,里面包含添加用户函数DwrService.addUser(UserBean user)代码如下:
 6 
 7 package test;
 8 
 9 import java.io.IOException;
10 
11 import org.directwebremoting.WebContext;
12 import org.directwebremoting.WebContextFactory;
13 import javax.servlet.ServletException;
14 
15 
16 public class DwrService {
17  public String check(String name){
18   //访问数据库验证信息
19   if(name.startsWith("aa")){
20    return "用户已经存在";
21   }
22   else{
23    return "可以使用该用户";
24   }
25  }
26  public String getInclude() throws ServletException, IOException
27  {
28      return WebContextFactory.get().forwardToString("/test.jsp");
29  }
30  
31  public String addUser(UserBean user){
32   //将用户信息添加到数据库中
33   return "Name:"+user.getUserName()+";Password="+user.getUserPassword();
34  }
35  
36 
37 }
38 
39 3、配置dwr.xml文件,注册类方法和Converte信息
40 
41 <?xml version="1.0" encoding="UTF-8"?>
42 <!DOCTYPE dwr PUBLIC
43     "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
44     "http://getahead.org/dwr/dwr20.dtd">
45 
46 <dwr>
47   <allow>
48   <convert converter="bean" match="test.UserBean"/>
49     <create creator="new" javascript="DwrService">
50       <param name="class" value="test.DwrService"/>
51     </create>
52  </allow>
53 </dwr>
54 
55 4、编写页面文件,提供功能。index.html
56 
57 <html> 
58 <head> 
59 <script type='text/javascript' src='/test/dwr/interface/DwrService.js'></script>
60 <script type='text/javascript' src='/test/dwr/engine.js'></script>
61 <script type='text/javascript' src='/test/dwr/util.js'></script>
62 
63 <script LANGUAGE=javascript> 
64 <!-- 
65 function addUser() {
66  var user={userName:null,userPassword:null};
67  dwr.util.getValues(user);
68   DwrService.addUser(user,function(data) {
69     dwr.util.setValue("userInfo",data);
70   });
71 }//--> 
72 </script> 
73 </head> 
74 <body> 
75 <hr>
76 name:<input type="text" id="userName"/>
77 <br>
78 password:<input type="text" id="userpassword"/>
79 <br>
80 <input value="submit" type="button" onclick="addUser()" />
81 <br>
82 <span id="userinfo"></span>
83 </body> 
84 </html>
85 
86 5、现在我们就可以通过Bean Converter将javascript变量user转变成java类型UserBean类型传给java方法了。
87 
88 说明:dwr.util.getValues(Object);如同dwr.util.getValue("id")方法,用来将页面中的元素内容复制到变量中,与getValue不同getValues方法不返回值内容而是修改参数Object中的信息。Object 中的内容是一些键值对,键对应到页面元素的id属性,值对应元素的内容。我们可以通过将页面元素的id设置为Bean的属性,然后通过该方法轻松的获取用户的输入信息。
89 
90 与读取属性相对的是设置页面元素的属性:setValue()和setValues()

 

posted on 2016-07-25 17:22  Sharpest  阅读(473)  评论(0编辑  收藏  举报