DWR无刷新分页

来源:互联网 发布:php虚拟主机管理系统 编辑:程序博客网 时间:2024/04/25 01:57

一、以从MySql数据库中查询一个部门列表为例
部门表(dept)
id name email tel address
二、整合DWR工作
1、在项目中加入DWR2.jar包
2、在web.xml中加入以下代码:
<!-- 配置DWR的Servlet -->
  <servlet>
 <servlet-name>dwr-invoker</servlet-name>
 <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
 <init-param>
  <param-name>debug</param-name>
  <param-value>true</param-value>
 </init-param>
  </servlet>
  <servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>
3、在WEB-INF下加入dwr.xml文件,并加入以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting
2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd" >
<!-- <!DOCTYPE dwr SYSTEM "dwr20.dtd" > -->
<dwr>
   <allow>
     <create creator="new" javascript="test">
      <param name="class" value="taotao.montao.service.ServiceMethod"/>
      <include method="defaultAll"/>
      <include method="next"/>
      <include method="goup"/>
      <include method="gotoPage"/>
      <include method="caonimamPageSize"/>
     </create>
     <convert converter="bean" match="taotao.montao.vo.DeptVO">
      <param name="include" value="id,name,email,tel,address"/>
     </convert>
     
     <convert converter="bean" match="taotao.montao.vo.PageVO">
      <param name="include" value="pageCount,nowPage,pageSize,infoCount"/>
     </convert>
   </allow>
</dwr>
三、前台页面代码:
<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<link rel="stylesheet" type="text/css" href="main.css"/>
<script type='text/javascript' src='/test/dwr/interface/test.js'></script>
<script type='text/javascript' src='/test/dwr/engine.js'></script>
<script type='text/javascript' src='/test/dwr/util.js'></script>
<script type="text/javascript">
var nowPage;
var mmmmmmm;
function getInfo(){
 test.defaultAll(hallnpsot);
}
function goSelect(selectPageSize){
 var dxsize = mmmmmmm.infoCount;
 if(selectPageSize>dxsize){
  selectPageSize = mmmmmmm.infoCount;
 }
 test.caonimamPageSize(selectPageSize,hallnpsot);
}
function goupPage(){
 nowPage = mmm.nowPage;
 nowPage--;
 if(nowPage<=0){
  document.getElementById("message").innerHTML = "对不起,已经是第一页";
 }else{
  test.goup(nowPage,mmmmmmm.pageCount,mmmmmmm.pageSize,hallnpsot);
  document.getElementById("message").innerHTML = "";
 }
}
function nextPage(){
 nowPage = mmm.nowPage;
 nowPage++;
 if(nowPage>mmm.pageCount){
  document.getElementById("message").innerHTML = "对不起,已经是最后一页";
 }else{
  test.next(nowPage,mmmmmmm.pageCount,mmmmmmm.pageSize,hallnpsot);
  document.getElementById("message").innerHTML = "";
 }
}
function goPage(){
 var nowPage = document.getElementById("initValue").value;
 if(nowPage==""){
  document.getElementById("message").innerHTML = "对不起,页面编号必须填写";
 }else{
  test.gotoPage(nowPage,mmmmmmm.pageCount,mmmmmmm.pageSize,hallnpsot);
  document.getElementById("message").innerHTML = "";
 }
}
function hallnpsot(infoList){
 var deptInfo = infoList[0];
 mmmmmmm = infoList[1];
 mmm = infoList[1];
 $(selectElement).options[0].value =mmmmmmm.infoCount;
 document.getElementById("msg").innerHTML = "<font color='red'>共"+mmm.infoCount+"条/每页"+mmm.pageSize+"条 共"+mmm.pageCount+"页 当前第"+mmm.nowPage+"页</font>";
 //获取一个表格
 var table = document.getElementById("tableInfo");
 //清楚表中的数据
 while(table.rows.length>0){
     table.deleteRow(0);
 }
 //给表格添加头部
 var newTh = table.insertRow();
 newTh.style.backgroundColor="#C8ECEC";
 newTh.align="center";
 //表头TD
 var newTh1 = newTh.insertCell();
 var newTh2 = newTh.insertCell();
 var newTh3 = newTh.insertCell();
 var newTh4 = newTh.insertCell();
 var newTh5 = newTh.insertCell();
 var newTh6 = newTh.insertCell();
 var newTh7 = newTh.insertCell();
 newTh1.style.width="100";
 newTh2.style.width="130";
 newTh3.style.width="190";
 newTh4.style.width="190";
 newTh5.style.width="190";
 newTh6.style.width="60";
 newTh7.style.width="60";
 newTh.className = "style2";
 //添加表头内容
 newTh1.innerHTML = "部门编号";
 newTh2.innerHTML = "部门名称";
 newTh3.innerHTML = "部门邮箱";
 newTh4.innerHTML = "部门电话";
 newTh5.innerHTML = "部门地址";
 newTh6.innerHTML = "编辑";
 newTh7.innerHTML = "删除";
 for(var i=0;i<deptInfo.length;i++){
  //获取传递过来的数据
  var id = deptInfo[i].id;
  var name = deptInfo[i].name;
  var email = deptInfo[i].email;
  var tel = deptInfo[i].tel;
  var address = deptInfo[i].address;
  //添加一行
  var newTr = table.insertRow();
  newTr.style.backgroundColor="#E6E6E6";
  newTr.align="center";
  newTr.className = "style3";
  //添加5列
  var newTd1 = newTr.insertCell();
  var newTd2 = newTr.insertCell();
  var newTd3 = newTr.insertCell();
  var newTd4 = newTr.insertCell();
  var newTd5 = newTr.insertCell();
  var newTd6 = newTr.insertCell();
  var newTd7 = newTr.insertCell();
  //给单元格添加数据
  //newTd1.innerHTML = "<input type='checkbox' name='id' value='"+id+"'/>";
  newTd1.innerHTML =id;
  newTd2.innerHTML = name;
  newTd3.innerHTML = email;
  newTd4.innerHTML = tel;
  newTd5.innerHTML = address;
  newTd6.innerHTML = "<a href='javascript:void(0)' onclick=''>编辑</a>";
  newTd7.innerHTML = "<a href='javascript:void(0)' onclick=''>删除</a>";
 }
}
</script>
</head>
<body onload="getInfo()">
<center>
<div class="style1" id="message"></div>
<table id="tableInfo" width="800" border="0" cellpadding="0" cellspacing="1" bordercolor="#CCCCCC"></table>
<table border="0" width="800">
   <tr align="left">
    <td align="left" id="msg" width="250"><br><br></td>
    <td width="150">
     <a href="javascript:void(0)" onclick="goupPage()">上一页</a>&nbsp;&nbsp;
     <a href="javascript:void(0)" onclick="nextPage()">下一页</a>
    </td>
    <td align="left" width="80">
     <input type="text" id="initValue" size="5"/>
     <input type="button" id="gonum" value="GO" onclick="goPage()"/>
    </td>
    <td>
     显示行数:
     <select id="selectElement" onchange="goSelect(this.value)">
      <option value="">全部</option>
      <option value="5">5</option>
      <option value="10">10</option>
      <option value="15">15</option>
      <option value="20">20</option>
      <option value="50">50</option>
      <option value="100">100</option>
     </select>
    </td>
   </tr>
</table>
</center>
</body>
</html>
四、后台Service层类代码:
package taotao.montao.service;
import java.util.List;
import taotoa.montao.dao.TestDAO;
public class ServiceMethod {
 TestDAO dao = new TestDAO();
 //GO页面
 @SuppressWarnings("unchecked")
 public List gotoPage(int nowpager,int pageContent,int pageSizeSize)
 {
  return dao.gotoPage(nowpager,pageContent,pageSizeSize);
 }
 //设置页面显示大小
 @SuppressWarnings("unchecked")
 public List caonimamPageSize(int pagePageSize)
 {
  return dao.setSize(pagePageSize);
 }
 //默认的页面显示数据
 @SuppressWarnings("unchecked")
 public List defaultAll()
 {
  return dao.defaultInfo();
 }
 //下一页的数据
 @SuppressWarnings("unchecked")
 public List next(int nowpager,int pageContent,int pageSizeSize)
 {
  return dao.nextInfo(nowpager,pageContent,pageSizeSize);
 }
 //上一页的数据
 @SuppressWarnings("unchecked")
 public List goup(int nowpager,int pageContent,int pageSizeSize)
 {
  return dao.goupInfo(nowpager,pageContent,pageSizeSize);
 }
}
五、后台DAO层类代码:
package taotoa.montao.dao;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import taotao.montao.dbcon.DBCon;
import taotao.montao.vo.DeptVO;
import taotao.montao.vo.PageVO;
public class TestDAO {
 private DBCon db = null;
 private PageVO page = new PageVO();
 //获取总的信息数
 public int getInfoCount(){
  int infoCount = 0;
  //获取Connection连接
  db = new DBCon();
  Connection conn = db.getConnection();
  //创建SQL语句
  String strSql = "select * from dept";
  //执行方法
  Statement stmt = null;
  ResultSet rs = null;
  try{
   stmt = conn.createStatement();
   rs = stmt.executeQuery(strSql);
   while(rs.next()){
    infoCount++;
   }
  }catch(Exception ex){
   ex.printStackTrace();
  }finally{
   try {
    rs.close();
    stmt.close();
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return infoCount;
 }
 
 @SuppressWarnings("unchecked")
 public List goupInfo(int nowpager,int pageContent,int pageSizeSize){
  this.defaultInfo();
  page.setNowPage(nowpager);
  page.setPageSize(pageSizeSize);
  page.setPageCount(pageContent);
  List mmm = new ArrayList();
  if(nowpager<=0){
   page.setNowPage(1);
  }
  int startLine = (page.getNowPage()*page.getPageSize())-page.getPageSize(); //设置起始行
  System.out.println("开始的数据: "+startLine);
  //返回的结果集对象
  List<DeptVO> list = new ArrayList<DeptVO>();
  //获取Connection连接
  db = new DBCon();
  Connection conn = db.getConnection();
  //创建SQL语句
  String strSql = "select * from dept limit "+startLine+","+page.getPageSize();
  System.out.println(strSql);
  //执行方法
  Statement stmt = null;
  ResultSet rs = null;
  try{
   stmt = conn.createStatement();
   rs = stmt.executeQuery(strSql);
   while(rs.next()){
    DeptVO dept = new DeptVO();
    dept.setId(rs.getInt("id"));
    dept.setName(rs.getString("name"));
    dept.setEmail(rs.getString("email"));
    dept.setTel(rs.getString("tel"));
    dept.setAddress(rs.getString("address"));
    list.add(dept);
   }
  }catch(Exception ex){
   ex.printStackTrace();
  }finally{
   try {
    rs.close();
    stmt.close();
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  mmm.add(0,list);
  mmm.add(1,page);
  return mmm;
 }
 
 @SuppressWarnings("unchecked")
 public List setSize(int pagePageSize){
  this.defaultInfo();
  page.setPageSize(pagePageSize);
  if(pagePageSize>=page.getInfoCount()){
   page.setPageCount(page.getInfoCount()/page.getPageSize());
  }else{
   page.setPageCount(page.getInfoCount()/page.getPageSize()+1);
  }
  System.out.println("总的页数: "+page.getPageCount());
  List mmm = new ArrayList();
  //返回的结果集对象
  List<DeptVO> list = new ArrayList<DeptVO>();
  //获取Connection连接
  db = new DBCon();
  Connection conn = db.getConnection();
  System.out.println(page.getPageSize());
  //创建SQL语句
  String strSql = "select * from dept limit 0,"+(page.getPageSize());
  System.out.println(strSql);
  //执行方法
  Statement stmt = null;
  ResultSet rs = null;
  try{
   stmt = conn.createStatement();
   rs = stmt.executeQuery(strSql);
   while(rs.next()){
    DeptVO dept = new DeptVO();
    dept.setId(rs.getInt("id"));
    dept.setName(rs.getString("name"));
    dept.setEmail(rs.getString("email"));
    dept.setTel(rs.getString("tel"));
    dept.setAddress(rs.getString("address"));
    list.add(dept);
   }
  }catch(Exception ex){
   ex.printStackTrace();
  }finally{
   try {
    rs.close();
    stmt.close();
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  mmm.add(0,list);
  mmm.add(1,page);
  return mmm;
 }
 
 @SuppressWarnings("unchecked")
 public List gotoPage(int nowpager,int pageContent,int pageSizeSize){
  this.defaultInfo();
  page.setNowPage(nowpager);
  page.setPageSize(pageSizeSize);
  page.setPageCount(pageContent);
  List mmm = new ArrayList();
  if(nowpager>page.getPageCount()){
   page.setNowPage(page.getPageCount());  //如果请求的页面大于总页数
  }
  int startLine = page.getNowPage()*page.getPageSize()-page.getPageSize(); //设置起始行
  //返回的结果集对象
  List<DeptVO> list = new ArrayList<DeptVO>();
  //获取Connection连接
  db = new DBCon();
  Connection conn = db.getConnection();
  //创建SQL语句
  String strSql = "select * from dept limit "+startLine+","+page.getPageSize();
  System.out.println(strSql);
  //执行方法
  Statement stmt = null;
  ResultSet rs = null;
  try{
   stmt = conn.createStatement();
   rs = stmt.executeQuery(strSql);
   while(rs.next()){
    DeptVO dept = new DeptVO();
    dept.setId(rs.getInt("id"));
    dept.setName(rs.getString("name"));
    dept.setEmail(rs.getString("email"));
    dept.setTel(rs.getString("tel"));
    dept.setAddress(rs.getString("address"));
    list.add(dept);
   }
  }catch(Exception ex){
   ex.printStackTrace();
  }finally{
   try {
    rs.close();
    stmt.close();
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  mmm.add(0,list);
  mmm.add(1,page);
  return mmm;
 }
 
 @SuppressWarnings("unchecked")
 public List nextInfo(int nowpager,int pageContent,int pageSizeSize){
  this.defaultInfo();
  page.setNowPage(nowpager);
  page.setPageSize(pageSizeSize);
  page.setPageCount(pageContent);
  List mmm = new ArrayList();
  if(nowpager>page.getPageCount()){
   page.setNowPage(page.getPageCount());  //如果请求的页面大于总页数
  }
  int startLine = (page.getNowPage()-1)*page.getPageSize(); //设置起始行
  //返回的结果集对象
  List<DeptVO> list = new ArrayList<DeptVO>();
  //获取Connection连接
  db = new DBCon();
  Connection conn = db.getConnection();
  //创建SQL语句
  String strSql = "select * from dept limit "+startLine+","+page.getPageSize();
  System.out.println(strSql);
  //执行方法
  Statement stmt = null;
  ResultSet rs = null;
  try{
   stmt = conn.createStatement();
   rs = stmt.executeQuery(strSql);
   while(rs.next()){
    DeptVO dept = new DeptVO();
    dept.setId(rs.getInt("id"));
    dept.setName(rs.getString("name"));
    dept.setEmail(rs.getString("email"));
    dept.setTel(rs.getString("tel"));
    dept.setAddress(rs.getString("address"));
    list.add(dept);
   }
  }catch(Exception ex){
   ex.printStackTrace();
  }finally{
   try {
    rs.close();
    stmt.close();
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  mmm.add(0,list);
  mmm.add(1,page);
  return mmm;
 }

 //默认页面显示的数据
 @SuppressWarnings("unchecked")
 public List defaultInfo(){
  int nowPage = 1;
  if (nowPage < 1){
   nowPage =1;
  }
  //返回的结果集对象
  List<DeptVO> list = new ArrayList<DeptVO>();
  //设置页对象
  page.setInfoCount(this.getInfoCount());      //设置记录总数
  page.setNowPage(nowPage);                    //设置当前页数
  page.setPageSize(5);                         //设置每页显示数
  page.setPageCount(page.getInfoCount()/page.getPageSize()+1);  //设置总页数
  //获取Connection连接
  db = new DBCon();
  Connection conn = db.getConnection();
  //创建SQL语句
  String strSql = "select * from dept limit 0,"+(page.getPageSize());
  //执行方法
  Statement stmt = null;
  ResultSet rs = null;
  try{
   stmt = conn.createStatement();
   rs = stmt.executeQuery(strSql);
   while(rs.next()){
    DeptVO dept = new DeptVO();
    dept.setId(rs.getInt("id"));
    dept.setName(rs.getString("name"));
    dept.setEmail(rs.getString("email"));
    dept.setTel(rs.getString("tel"));
    dept.setAddress(rs.getString("address"));
    list.add(dept);
   }
  }catch(Exception ex){
   ex.printStackTrace();
  }finally{
   try {
    rs.close();
    stmt.close();
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  List mm = new ArrayList();
  mm.add(0,list);
  mm.add(1,page);
  return mm;
 }

六、后台实体类代码:
1、PageVO.java
package taotao.montao.vo;
public class PageVO {
 private int pageCount; //总页数
 private int nowPage;   //当前页编号
 private int pageSize;  //页面大小
 private int infoCount; //总记录数
 public int getPageCount() {
  return pageCount;
 }
 public void setPageCount(int pageCount) {
  this.pageCount = pageCount;
 }
 public int getNowPage() {
  return nowPage;
 }
 public void setNowPage(int nowPage) {
  this.nowPage = nowPage;
 }
 public int getPageSize() {
  return pageSize;
 }
 public void setPageSize(int pageSize) {
  this.pageSize = pageSize;
 }
 public int getInfoCount() {
  return infoCount;
 }
 public void setInfoCount(int infoCount) {
  this.infoCount = infoCount;
 }
}
2、DeptVO.java
package taotao.montao.vo;
public class DeptVO {
 private int id;
 private String name;
 private String email;
 private String tel;
 private String address;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getEmail() {
  return email;
 }
 public void setEmail(String email) {
  this.email = email;
 }
 public String getTel() {
  return tel;
 }
 public void setTel(String tel) {
  this.tel = tel;
 }
 public String getAddress() {
  return address;
 }
 public void setAddress(String address) {
  this.address = address;
 }
}

原创粉丝点击