`
zengbo0710
  • 浏览: 414662 次
社区版块
存档分类
最新评论

DWR使用体会2:获取数据库表数据,使用addRows生成列表

阅读更多

DWRUtil.addRows()

语法:

描述:
向指定id的table元素添加行。它使用数组中的每一个元素在table中创建一行。然后用cellfuncs数组中的没有函数创建一个列。单元格是依次用cellfunc根据没有数组中的元素创建出来的。

DWR1.1开始,addRows()也可以用对象做为数据。如果你用一个对象代替一个数组来创建单元格,这个对象会被传递给cell函数。

你可以写一些像这样的伪代码:

参数:

选项包括:

实际使用:

1.根据输入查询,列表显示中加入删除按钮,输入参数动态检查功能。

类文件:UserPostInfoList

package com.ucbbs.dwr;

import java.util.*;
import java.sql.*;
import com.ucbbs.db.*;

public class UserPostInfoList {
 
 private static final String getUserTopicInfoList = "select * from t_Topic where PostUID=? and PostTime<getDate()";

 List lUserTopic = null;
 List lUserPost = null;
 
 public List getUserTopicList(int iUID){
  DbTrans DBSQL = null;
  CallableStatement cstmt = null;
  ResultSet rs = null;  
  
  try{
   lUserTopic = new Vector();
   DBSQL = new DbTrans();
   cstmt = DBSQL.conn.prepareCall(getUserTopicInfoList);
   cstmt.setInt(1,iUID);
   rs = cstmt.executeQuery();
   while(rs.next()){

    String mystr[] = {rs.getString("TopicID"),rs.getString("BoardsID"),rs.getString("Title"),"<input name='bt' type='button' value='删除' onclick='mySubmit("+rs.getString(1)+")'/>"};
       lUserTopic.add(mystr); 
   
    lUserTopic.add(mystr);   
    
   }
  }
  catch(SQLException e ){
   /*............省略..........*/
  }
  finally{
   /*............省略..........*/
  }
  return lUserTopic;  
 }

 
 public boolean delTopic(int iID){
  DbTrans DBSQL = null;
  CallableStatement cstmt = null;
  boolean isOK = false;
  
  try{
   DBSQL = new DbTrans();
   cstmt = DBSQL.conn.prepareCall(DEL_Topic);
   cstmt.setInt(1,iID);
   cstmt.executeUpdate();
   isOK = true;
   
  }
  catch(SQLException e){
   /*............省略..........*/
  }
  finally{
   /*............省略..........*/
  }
  return isOK;
 }
 
 
 
 
 public boolean isNumber(String validString){
  boolean isOK = false;
  
  try{
   
      if (validString==null) return false;
        byte[] tempbyte=validString.getBytes();
        for(int i=0;i<validString.length();i++) {
            //by=tempbyte[i];
            if((tempbyte[i]<48)||(tempbyte[i]>57)){
                isOK = false;
            }
            else{
             isOK = true;
            }
        }
           
  }
  catch(Exception e){
   
  }
  return isOK;
  
 }

}

页面:

<%@ page language="java" contentType="text/html; charset=gb2312" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<script src='/dwr/interface/uPostInfo.js'></script>
<script src='/dwr/engine.js'></script>
<script src='/dwr/util.js'></script>
<script>

var cellFuncs = [
  function(data) { return data[0]; }, //因为得到的返回值是数组,可以用此方式取值
  function(data) { return data[1]; },
  function(data) { return data[2];}
  ];

  function getList(){
  DWRUtil.removeAllRows("apartmentsbody");
  var id = document.all.strID.value;
  uPostInfo.getUserTopicList(id,fillt); 
     document.all.resultTable.style.display = '';
}
function fillt(list){DWRUtil.addRows("apartmentsbody",list,cellFuncs);
}

function checkID(){     //strID的onChange事件执行此检查操作,并将结果给回调函数
 uPostInfo.isNumber(replayID,DWRUtil.getValue("strID"));
}
function replayID(valid){  //参数1,检查结果;参数2,输入;参数3,信息显示ID;参数4,信息
  processReply(valid, "strID", "id-error", "请输入正确的号码");
}
function processReply(valid, id, errid, error) {
  if (valid) {
    DWRUtil.setValue(errid, "");
    $(id).style.color = "black";
  }
  else {
    DWRUtil.setValue(errid, error);
    $(id).style.color = "red";
 $(id).focus(); 
  }
}

</script></head>

<body>

<table width=350 border=0 cellpadding=0 cellspacing=1 height=44 align="center">
<tr>
      <td width=84 height="42"  align="center" bgcolor="#50C3FF"> 输入UC号: </td>
      <td width="168"  bgcolor="#CDEEFF"><input type="text" name="strID" onChange="checkID()"></td>
      <td width="94"  align="center" bgcolor="#CDEEFF"><input type="button" name="Submit" value="确定" onClick="getList()"></td><td width="101"  align="center" bgcolor="#CDEEFF"><span id="id-error" class="error">  </span></td><!-- 此行用来显示错误信息-->
    </tr>
</table>

<div id="resultTable">
<table width=350 border=1 cellpadding=0 cellspacing=1 height=44 align="center">
  <thead>
    <tr>
      <th width="60" height="20">TopicID</th>
      <th width="180" height="20">BoardsID</th>
      <th width="80" height="20">Title</th>
    </tr>
  </thead>
  <tbody id="apartmentsbody">

  </tbody>
 </table>
</div>
</body>
</html>

体会:

1.所参考的例子中,是使用类,向List添加对象,但是调试中却返回空.....只好修改为使用数组,这样所产生的性能问题....

2.回调函数的取值问题,也修改为数组操作。

 

例子2:实现下拉选择后,显示查询结果,点删除后自动更新列表。

页面

<%@ page language="java" contentType="text/html; charset=gb2312" %>
<%
  String sysid= request.getParameter("sysid");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>封禁用户查询</title>
  <script src='/dwr/interface/unPostUser.js'></script>
  <script src='/dwr/engine.js'></script>
  <script src='/dwr/util.js'></script>
  <script>

var cellFuncs = [
  function(data) { return data[0]; },
  function(data) { return data[1]; },
  function(data) { return data[2];},
  function(data) { return data[3]; },
  function(data) { return data[4]; },
  function(data) { return data[5]; }];


  function getList(){
  DWRUtil.removeAllRows("apartmentsbody");
  var id = document.all.unPostUID.value;
  var itype = document.all.type.value;
  unPostUser.getUnpostUserSel(id,itype,fillt); 
     //document.all.resultTable.style = '';
}
function fillt(list){
  //alert("2");
DWRUtil.addRows("apartmentsbody",list,cellFuncs);
}
function check(){
 var uid =document.all.unPostUID.value;
 if(uid==""){
   document.all.unPostUID.focus();
   alert("请输入要查询的号码");
 }
}
function mySubmit(strID){
 //document.all.unPostUID.value = strID; 
 //document.fform.submit();

unPostUser.setPostOK(strID,0,getList);//类添加删除方法后,在这里可以直接删除而不用提交
}
 
</script>
</head>

<body>
<form name=fform  action="SetUnpost_Sel.jsp?sysid=<%=sysid%>" method="post">
<table width=800 border=0 cellpadding=0 cellspacing=1 height=33 align="center">
  <tr>
    <td width=126 height="31"  align="center" bgcolor="#50C3FF"> 全区封禁用户查询</td>
    <td width="256"  bgcolor="#CDEEFF"> UC号:
      <input type="text" name="unPostUID"></td>
    <td width="334"  align="left" bgcolor="#CDEEFF">
  <select name="type" onFocus="check()" onChange="getList()">
    <option value="-1">-请选择查询类型-</option>
    <option value="1">---当前封禁---</option>
    <option value="2">---过期封禁---</option>
     </select></td>
  </tr>
</table>
<div id="resultTable">
  <table width=800 border=1 cellpadding=0 cellspacing=1 height=24 align="center">
    <thead>
    <tr bgcolor="#50C3FF">
    <th width="123"><font color="#FFFFFF"><strong>被封用户</strong></font></th>
    <th width="114"><font color="#FFFFFF">执罚者</font></th>
    <th width="135"><font color="#FFFFFF">被封原因</font></th>
    <th width="135"><font color="#FFFFFF">开始时间</font></th>
    <th width="131"><font color="#FFFFFF">结束时间</font></th>
 <th width="100"><font color="#FFFFFF">操作</font></th>
    </tr>
  </thead> 
  <tbody id="apartmentsbody">    
  </tbody>
</table>
</div>
</form> 
</body>
</html>

类文件

import java.sql.*;
import java.util.*;
/**省略**/

public class UnpostUserSel {

 private static final String GET_UNPOST_USER = "select UID,ManagerUID,UnpostReason,UnpostStartTime,UnpostEndTime,IsForever from t_Unpost where UID=? order by UID";

 private static final String GET_OVER_UNPOST = "select UID,ManagerUID,UnpostReason,UnpostStartTime,UnpostEndTime,IsForever from t_Unpost where UID =? and UnpostEndTime < getDate() order by UID";

private static final String SET_POST_OK = "{call pr_setPostOK(?,?)}";

 List userList = null;

 public List getUnpostUserSel(int iUID, int iType) {
  DbTrans DBSQL = null;
  CallableStatement cstmt = null;
  ResultSet rs = null;
  AdminUser myAdmin = new AdminUser();
  userList = new ArrayList();

  try {
   DBSQL = new DbTrans();
   if (iType == 1) {
    cstmt = DBSQL.conn.prepareCall(GET_UNPOST_USER);
   }
   if (iType == 2) {
    cstmt = DBSQL.conn.prepareCall(GET_OVER_UNPOST);
   }

   cstmt.setInt(1, iUID);
   rs = cstmt.executeQuery();

   if (rs.next()) {
    String str1 = "";
    String str2 = "";
    String str3 = "";
    str1 = rs.getString(1);
    str1 = myAdmin.getNickName(str1) + "【" + str1 + "】";
    str2 = rs.getString(2);
    str2 = myAdmin.getNickName(str2) + "【" + str2 + "】";
    if (rs.getInt(6) == 1) {
     str3 = "永久封禁";
    } else {
     str3 = rs.getString(5);
    }
    String str[] = { str1, str2, rs.getString(3), rs.getString(4),
      str3,
      "<input name='bt' type='button' value='解禁该用户' onclick='mySubmit("+rs.getString(1)+")'/>" };
    userList.add(str);
   } else {
    String str[] = {"无封禁记录"};
    userList.add(str);
   }
  }

  catch (SQLException e) {/**省略**/}

   finally { /**省略**/ }
    return userList;

 }

   public void setPostOK(String UID, String BoardsID) {
   
      DbTrans DBSQL = null;
   CallableStatement cstmt = null;

      try {
        DBSQL = new DbTrans();
        cstmt = DBSQL.conn.prepareCall(SET_POST_OK);
        cstmt.setString(1,UID);
        cstmt.setString(2,BoardsID);
        cstmt.executeUpdate();
      }
      catch (SQLException e) {/**省略**/}
      finally {/**省略**/}

}


 



评论

相关推荐

    dwr实例,从后台取数据显示

    在你提供的实例中,“dwr实例,从后台取数据显示”表明这是一个使用DWR从服务器获取数据并在前端展示的简单应用。 1. **DWR的工作原理**:DWR通过在服务器上设置一个代理,允许JavaScript调用Java方法,就像它们是...

    一个简单dwr的使用例子,tomcat数据库连接池

    这个例子展示了如何在Web应用程序中使用DWR与Tomcat数据库连接池来实现Ajax交互,从而实现实时的客户端-服务器通信。 首先,我们需要了解DWR的基本工作原理。DWR允许JavaScript在用户的浏览器中直接调用服务器端的...

    web聊天,私聊,群聊。dwr实现。无数据库

    在这个项目中,我们关注的是如何使用DWR(Direct Web Remoting)框架来实现一个无需数据库支持的实时在线聊天应用,包括私聊和群聊功能。DWR是一种在浏览器和服务器之间进行实时通信的技术,它允许JavaScript与Java...

    DWR学习案例详解(数据库)

    在数据库操作中,DWR可以帮助开发者实现实时的数据查询、插入、更新和删除。例如,你可以创建一个JavaScript函数,该函数调用DWR的接口,执行SQL查询并获取结果。这些结果可以直接在页面上显示,而无需重新加载页面...

    dwr问题管理系统:使用的技术有:jsp、dwr、dbutils/jdbc、简单工厂模式,MVC模式等技术

    在问题管理系统中,DWR扮演了关键角色,它极大地提高了用户体验,用户无需刷新页面就能获取或更新数据,如提交问题、查看状态等操作。 DBUtils是Apache组织提供的一个Java数据库连接工具,它简化了JDBC的使用。在本...

    dwr + json简单分页

    2. **创建Java服务接口**:定义一个包含分页查询方法的服务接口,例如`PageService.java`,该接口提供根据页码和每页大小获取数据的方法。 ```java public interface PageService { List&lt;DataObject&gt; getPage(int ...

    DWR使用配置,并用DWR获得返回list类型中的对象,并在页面显示

    // 实现获取数据的逻辑,可能从数据库或其他数据源中获取 List&lt;MyObject&gt; dataList = new ArrayList(); // 假设填充数据... return dataList; } ``` 这里的`MyObject`是你要返回的数据对象,可以根据实际需求...

    dwr做的联动菜单 数据从数据库中取出

    本文将详细讲解如何使用Direct Web Remoting (DWR) 实现一个从数据库中获取数据的二级联动菜单,以及涉及到的相关技术。 **DWR(Direct Web Remoting)** 是一个开源的Java库,它允许JavaScript与服务器端的Java...

    DWR中文文档 用来与数据库,java类交互的ajax框架

    在使用DWR与数据库交互时,开发者通常会将数据库操作封装在Java类中,然后通过DWR暴露这些方法供JavaScript调用。例如,你可以创建一个`UserService`类,包含增删改查(CRUD)用户的方法,然后在DWR配置文件中声明这...

    DWR addOptions()填充下拉框,addRows()填充表格

    `addRows()` 方法会根据提供的数据自动生成`&lt;tr&gt;`和`&lt;td&gt;`元素,将数据填充到表格中。 3. DWR的核心优势: DWR提供了丰富的JavaScript API,使得在客户端操作和服务器端Java代码交互变得简单。它处理了诸如JSON序列...

    DWR操作数据库模拟实现Google搜索效果

    DWR(Direct Web Remoting...这个项目不仅可以帮助开发者熟悉DWR技术,还能深入理解Ajax在实际应用中的使用,以及如何与数据库进行交互。通过实践,你可以提升Web开发的技能,更好地理解和运用实时交互的Web应用设计。

    DWR二级联动(连接数据池获取数据)

    在这个"二级联动(连接数据池获取数据)"的场景中,DWR被用来在前端JS文件中获取来自后端Oracle数据库的数据,以实现联动下拉框的效果,这种效果常见于多级选择的表单中,如省市区的选择,当用户选择一个省份时,...

    SSH和DWR简单整合,还包括了根据Pojo反向生成数据库的经典代码

    3. **使用Hibernate Tools**:运行Hibernate的hbm2ddl命令,它会根据Pojo类生成数据库DDL(Data Definition Language),自动创建或更新数据库表。 **学习资源与实践建议:** 对于初学者,可以通过搭建简单的SSH+...

    dwr使用例子配置和使用

    DWR (Direct Web Remoting) 是一种开源的Java库,用于在Web应用程序中实现异步JavaScript和XML(AJAX)通信。...通过上述步骤,你可以配置和使用DWR在JSP页面中调用服务层的方法,实现动态数据的交互。

    dwr框架实现无刷新分页

    - 服务器端根据传入的页码参数查询数据库,获取对应页的数据,并返回给前端。 - 前端接收到数据后,动态替换或添加到页面的DOM元素中,完成分页效果。 **三、实战步骤** 1. **安装DWR框架**:将DWR库加入到项目...

    Spring 2中整合DWR 2

    ### Spring 2中整合DWR 2:详细解析与实践 #### 一、Spring与DWR简介 在探讨如何在Spring 2框架中整合DWR 2之前,我们首先需要了解这两个技术的基本概念。 - **Spring框架**:Spring是目前Java开发中最流行的开源...

    DWR2相关资料

    通过这个示例项目,学习者可以深入理解DWR2的工作原理,如何配置和使用DWR,以及如何在实际项目中利用DWR提高用户体验。同时,它也提供了实践机会,帮助开发者熟练掌握DWR2的各种特性和用法。在探索这个压缩包的过程...

    DWR级联菜单下拉框

    - 编写Java服务:根据数据库结构(例如Ms SQL 2005中的表和字段),编写获取数据的服务,如获取省份、城市和区县的列表。 2. **数据库设计**: - 设计关联表:为了实现级联效果,数据库中的相关表需要有合适的...

    web开发实例(DWR+Struts2)

    在DWR与Struts2的结合使用中,DWR主要负责前端与后端的数据交互。它使得前端页面可以直接调用服务器端的Java方法,无需手动编写复杂的Ajax代码。例如,用户在Web界面操作后,DWR可以实时地将这些操作传递到服务器,...

    dwr基础范例 MyEclipse

    - **用户列表展示**:可以创建一个简单的用户管理应用,前端使用DWR调用后端服务,获取并显示用户列表。 - **搜索功能**:添加一个搜索框,输入关键词后,DWR实时查询数据库并返回结果。 7. **错误处理和调试** ...

Global site tag (gtag.js) - Google Analytics