注意在导入js文件时必须先导入系统的js,再导入自己的
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='dwr/interface/userAct.js'></script>
首先,使用DWR,需配置dwr.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">
- <dwr>
- <allow>
- <create creator="new" javascript="MyDWR">
- <param name="class" value="com.DWRTest.Controller.MyDWR"/>
- </create>
- <convert converter = "bean" match = "com.DWRTest.model.*"/>
- </allow>
- </dwr>
我们配置com.DWRTest.Controller.MyDWR,且配置com.DWRTest.model下的所有文件一个转换器。这个转换器,才使得DWR能够传递及访问对象。
假设model下有一个POJO:
- package com.DWRTest.model;
- public class User {
- private String username;
- private String password;
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
那么可以做以下几个实验:
1.DWR获得JAVA传递的对象
java代码:
- public User getMyUser() {
- User user = new User();
- user.setUsername("tammypi");
- user.setPassword("1988");
- return user;
- }
利用javascript访问这个对象:
- MyDWR.getMyUser(function(user){
- alert(user);
- alert('用户名:' + user.username + ",密码:"+user.password);
- }
2.DWR获得JAVA传递的对象List:
java代码:
- public List<User> getMyUserList() {
- List<User> list = new ArrayList<User>();
- User user2 = new User();
- user2.setUsername("tammypi");
- user2.setPassword("1988");
- User user1 = new User();
- user1.setUsername("tony");
- user1.setPassword("1962");
- list.add(user1);
- list.add(user2);
- return list;
- }
利用javascript访问list:
- MyDWR.getMyUserList(function(list){
- for(var i=0;i<list.length;i++) {
- alert("访问第"+i+"个对象");
- alert(list[i].username+","+list[i].password);
- }
- });
3.DWR传递对象,并访问JAVA返回的Map:
java代码:
- public Map<String,String> insertUser(User user){
- System.out.println(user.getUsername()+","+user.getPassword());
- Map<String,String> map = new HashMap<String,String>();
- map.put(user.getUsername(), user.getPassword());
- return map;
- }
利用javascript访问返回的map:
- var myUser = new Object();
- //传对象1
/* var u = {
username : "aaaaaaaaaaaa",
password : "bbbbbbbbbbbb"
}; */
//传对象2
var user = {};
user.username="ddddddddddd";
user.password="dddddddddddddddd"; - MyDWR.insertUser(myUser,function(dat11){
- for(var key in dat11) {
- alert(key+","+dat11[key]);
- }
- });
4.DWR传递对象数组:
java代码:
- public void insertUserList(User[] users){
- for(int i=0;i<users.length;i++){
- User user = users[i];
- System.out.println("用户名:"+user.getUsername()+",密码:"+user.getPassword());
- }
- }
javascript代码:
- var arr = new Array();
- var myUser1 = new Object();
- myUser1.username = "kkdkf";
- myUser1.password = "kj";
- var myUser2 = new Object();
- myUser2.username = "kkdkf113434";
- myUser2.password = "kj343434";
- arr[0]=myUser1;
- arr[1]=myUser2;
- MyDWR.insertUserList(arr);