四DWR综合实践 用户管理模块实现

 知识点:

编写要在前台调用的java对象;
在dwr.xml中配置这个对象;
在页面中引入dwr的js库及自动生成的调用java对象的js库
dwr.util中常用的js函数以快速开发。

 

四DWR综合实践:用户管理模块实现 

1.userManager.html
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  <link rel="stylesheet" type="text/css" href="generic.css" />
  <title>DWR示例:用户管理 蓝杰信息@NetJava.cn</title>
 </head>
 <!--引入dwr的js脚本-->
 <script src="dwr/interface/UserManger.js"></script>
 <script src="dwr/engine.js" /></script>
 <script src="dwr/util.js" /></script>
 <script type="text/javascript">
//填充用户区域下拉表---DWR调用
function fillSelectUserArea(){   
UserManger.getAreaMap(callBackFSU);
}
//填充用户区域下拉表DWR调用的回调方法
var callBackFSU=function(areaList){//()是上面调用方法的返回值Map

DWRUtil.removeAllOptions("selectUserArea");
dwr中可以自动将java的Map对象中的键和值转化为html select组件中的option  
DWRUtil.addOptions("selectUserArea", areaList);
};

//根据selectUserArea组件选择值调用填充表格的函数
function displayselectUserArea(sua){
 //  alert("选中的值是: "+sua.value);
   fillTable(sua.value);
   }
   //从服务器上取取用户数据集合填充表格---DWR调用
function fillTable(theAreaID){
 if(theAreaID==null){
 theAreaID=dwr.util.getValue("selectUserArea");
 }
  UserManger.getUserByAreaID(theAreaID,callBack);
}
//定义一个数组,用以缓存表中的用户信息
var userCache = { };
//提取用户列表的回设函数:userList中放的是用户象
var callBack=function(userList) {
    // Delete all the rows
    dwr.util.removeAllRows("userTable");
    document.getElementById("editDiv").style.visibility ='hidden';
    //alert("返回用户列表长度是:"+userList.length);
        //取得html中表格对象
    var dtable = document.getElementById("userTable");
    for (var i = 0; i < userList.length; i++)
    {
      theUser = userList[i];
      //在table中新建一行
               var elTr = dtable.insertRow( -1 );
               //注意这句:标识以后面删除时dom对象的唯一ID
               var userTableRowID=i*1000;
                elTr.setAttribute("id", userTableRowID);
                //创建id列:
              var idTd = elTr.insertCell( -1 );
              idTd.innerHTML = theUser.id;
                //创建areaID列
              var areaTd = elTr.insertCell( -1 );
              areaTd.innerHTML = theUser.areaID;
              //创建name列
              var nameTd = elTr.insertCell( -1 );
               nameTd.innerHTML = theUser.name;
               //创建name列
              var fixFeeTd = elTr.insertCell( -1 );
               fixFeeTd.innerHTML = theUser.fixFee;
               // alert(theUser);
                        
               //创建编辑
              var editTd = elTr.insertCell( -1 );
  var editBTN="<input type=/"button/" value=/"修改/" οnclick=/"editUser

("+theUser.id+");/"/>";//一排写完,要不然出错
   var deleteBTN="<input type=/"button/" value=/"删除/" οnclick=/"deleteUser

("+theUser.id+","+userTableRowID+");/"/>";//一排写完,要不然出错
              editTd.innerHTML =editBTN  +"   "+deleteBTN;
            //将用户保存到缓存中
              userCache[theUser.id] = theUser;    
    }          
  };
 
 
 //修改某个用户的事件处理:参数为用户ID
function editUser(userID){
  document.getElementById("editDiv").style.visibility ='visible';
   var user = userCache[userID];
   alert("要修改的用户是: "+user.id);
   dwr.util.setValues({spanuserid:user.id,iptname:user.name,

iptarea:user.areaID,iptfixFee:user.fixFee});
}
//删除某个用户的事件处理---DWR调用
function deleteUser(userID,userTableRowID) {
alert("要修改的用户ID是: "+userID+"表中的行ID是: "+userTableRowID);
  var user = userCache[userID];
  if (confirm("Are you sure you want to delete " + user.name + "?")) {
            var rowToDelete = document.getElementById(userTableRowID);
    var userTable = document.getElementById("userTable");
    //从表格中移除用户数据行
      userTable.removeChild(rowToDelete);
              UserManger.deleteUser(userID);
  }
}
 //更新用户事件处理---DWR调用
function updateUser() {
   //创建一个js中的UserInfo对象,发送给服务器
  var user=new Object();
  user.id=dwr.util.getValue("spanuserid");
  user.areaID=dwr.util.getValue("iptarea");
  user.name=dwr.util.getValue("iptname");
  user.fixFee=dwr.util.getValue("iptfixFee");
  window.alert("要修改的用户ID为: "+user.id);
  UserManger.updateUser(user,callbackForUDUser);
}
 //更新用户的回调函数
var callbackForUDUser=function(result){
        if(result){
        fillTable();
        window.alert("用户信息保存成功!");
        }else{
        window.alert("用户信息保存失败!");
        }
};
//清除输入框中的用户数据
function clearUserInput() {
  dwr.util.setValues({spanuserid:null,iptname:null,iptarea:null, iptfixFee:null});
}

</script>
 <body οnlοad="fillSelectUserArea();">
  <pre>
根据区域提取未处理客户:<select id="selectUserArea" οnchange="displayselectUserArea

(this)"></select>
<table border="2">
  <thead>
     <tr>
      <th>序号</th>
      <th>所属地区</th>
      <th>用户名</th>
      <th>消费额度</th>
      <th>操 作</th>
  </tr>
    </thead>
  <tbody id="userTable">
  </tbody>
</table>
<!-- 初始设为不可见 -->
<div id="editDiv" style="visibility:hidden">
用户序号:<span id="spanuserid"> </span>
用户名字:<input id="iptname" type="text" size="10" />
所属地区:<input id="iptarea" type="text" size="10" />
用户额度:<input id="iptfixFee" type="text" size="10" />
<br>
<input type="button" value="保 存" οnclick="updateUser()" />
    <input type="button" value="清 空" οnclick="clearPerson()"

/>
</div>
 </pre>
 </body>
2.  UserManager.java
package cn.netjava.dwr;

import java.util.*;

/**
 * 用户管理理:为dwr前端调用提供
 *
 * @author www.NetJava.cn
 */
public class UserManger {
 // 取得用户的地区域列表:Map中为 区域ID:区域名
 public Map getAreaMap() {
  return areaMap;
 }

 // 根据地区代号提取用户列表
 public List<UserInfo> getUserByAreaID(int areaID) {
  System.out.println("AreaID : " + areaID);
  List<UserInfo> userList = new ArrayList();
  // 模拟生成用户列表
  int count = new java.util.Random().nextInt(5) + 4;
  for (int i = 1; i <= count; i++) {
   userID++;
   UserInfo us = new UserInfo();
   us.setId(userID);
   us.setAreaID(areaID);
   us.setName("第" + userID + "个用户");
   us.setFixFee(100 * i);
   userList.add(us);
  }
  return userList;
 }

 // 以下方法模拟增、改、存用户到数据库
 public boolean updateUser(UserInfo user) {
  System.out.println("updateUser OK: " + user.toString());
  return true;
 }

 // 根据用户id删除用户
 public boolean deleteUser(int id) {
  System.out.println("deleteUser OK: ID" + id);
  return true;
 }

 // 区域列表,在类装载时初始化
 private static Map areaMap = new HashMap();
 static {
  for (int i = 0; i < 5; i++) {
   areaMap.put(1, "芙蓉区");
   areaMap.put(2, "红旗区");
   areaMap.put(3, "雨花区");
   areaMap.put(4, "开福区");

   areaMap.put(5, "岳麓区");
  }
 }

 // 用与生成用户唯一ID
 private static int userID = 0;
}
____________________________
UserInfo.java
package cn.netjava.dwr;

/**
 * 用于DWR在前台展示的用户对象
 * @author www.NetJava.cn
 */
public class UserInfo
{
    private int id;
    private int areaID;
    private String name;
    private int fixFee;
    //getter setter id areaID..
...

}
3. web.xml与上节都一样
 web-inf/dwr.xml
<dwr>
  <allow>
 <!-- 用户管理 cn.netjava.dwr.UserManager.java让js调用 -->
  <create creator="new" javascript="UserManger" scope="script">
    <param name="class" value="cn.netjava.dwr.UserManger"/>
  </create>
  <convert match="cn.netjava.dwr.UserInfo" converter="bean"/>
</allow>
</dwr>
4.dwr.jar

附件:csdn空间4/netJavaDWR(用户管理模块).rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值