分页

1.通过java生成分页代码

PageInfo.java

package com.paging;
public class PageInfo {
 public static String getAdminPagingNavigation(Page<?> page) {
  StringBuffer displayInfo = new StringBuffer();
   displayInfo.append("<ul class='fr'>");
   displayInfo.append("<li>每页" + page.getPageSize() + "条 / </li>");
   displayInfo.append("<li>共" + page.getTotalCount() + "条</li>");
   switch (page.getPageSize()) {
   case 10:
    displayInfo
      .append("<li><a href="javascript:pageSize('10');" class="current">&nbsp;10&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('20');" >&nbsp;20&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('30');"  >&nbsp;30&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('50');"  >&nbsp;50&nbsp;</a>");
      break;
   case 20:
    displayInfo
      .append("<li><a href="javascript:pageSize('10');" >&nbsp;10&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('20');" class="current">&nbsp;20&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('30');"  >&nbsp;30&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('50');"  >&nbsp;50&nbsp;</a>");
    break;
   case 30:
    displayInfo
      .append("<li><a href="javascript:pageSize('10');" >&nbsp;10&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('20');" >&nbsp;20&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('30');" class="current" >&nbsp;30&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('50');"  >&nbsp;50&nbsp;</a>");
   
    break;
   case 50:
    displayInfo
      .append("<li><a href="javascript:pageSize('10');" >&nbsp;10&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('20');" >&nbsp;20&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('30');" >&nbsp;30&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('50');" class="current" >&nbsp;50&nbsp;</a>");
   
     break;
   default:
    displayInfo
      .append("<li><a href="javascript:pageSize('10');" >&nbsp;10&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('20');" >&nbsp;20&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('30');" >&nbsp;30&nbsp;</a>");
    displayInfo
      .append("<a href="javascript:pageSize('50');" >&nbsp;50&nbsp;</a>");
   
    break;
   }
   displayInfo
   .append("<li class='fir'><a href="javascript:pageInfo('0');"><span>首页</span></a></li>");
   if (page.isHasPre()) {
    displayInfo
      .append("<li class='pre'><a href="javascript:pageInfo('"
        + (page.getPageNo() - 1)
        + "');" ><span>上一页</span></a></li>");
   } else {
    displayInfo
      .append("<li class='pre disabled'><a href="javascript:void(0)" ><span>上一页</span></a></li>");
   }
   if (page.getPageNo() == 1) {
    displayInfo
      .append("<li class='cur'><a href="javascript:void(0);"><span>1</span></a></li>");
   } else {
    displayInfo
      .append("<li><a href="javascript:pageInfo('1');"><span>1</span></a></li>");
   }
   if (page.getTotalPages() > 2) {
    if (page.getPageNo() != 1
      && page.getPageNo() != page.getTotalPages()) {
     displayInfo
       .append("<li class='cur'><a href="javascript:void(0);"><span>"
         + page.getPageNo() + "</span></a></li>");
    } else {
     displayInfo
       .append("<li><a href="javascript:void(0);"><span>...</span></a></li>");
    }
   }
   if (page.getTotalPages() > 1) {
    if (page.getPageNo() == page.getTotalPages()) {
     displayInfo
       .append("<li class='cur'><a href="javascript:void(0);"><span>"
         + page.getTotalPages() + "</span></a></li>");
    } else {
     displayInfo.append("<li><a href="javascript:pageInfo('"
       + page.getTotalPages() + "');"><span>"
       + page.getTotalPages() + "</span></a></li>");
    }
   }
 
   if (page.isHasNext()) {
    displayInfo
      .append("<li class='next'><a href="javascript:pageInfo('"
        + page.getNextPage()
        + "')"><span>下一页</span></a></li>");
   } else {
    displayInfo
      .append("<li class='next disabled'><a href="javascript:void(0);"><span>下一页</span></a></li>");
   }
   displayInfo
     .append("<li class='last'><a href="javascript:pageInfo('"
       + page.getTotalPages()
       + "')"><span>末页</span></a></li>");
   displayInfo
     .append("<li><span class='ma1'>转到</span><span><input id='numberSize' type='text' class='uspagesrk'/></span><span class='ma1'>页</span></li>");
   displayInfo
     .append("<li><input type='button' class='btn btn-blue' onclick="inputPageNo('"
       + page.getTotalPages()
       + "');" value='确定' /></li></ul>");
  return displayInfo.toString();
 }
}
 
2.创建Page类和Parameter类用于存放分页信息和结果
package com.paging;
 
import java.util.ArrayList;
import java.util.List;
 
@SuppressWarnings("serial")
public class Page<T> extends Parameter{
 //存放结果的
 private List<T> result = new ArrayList<T>();
 //总数据个数
 private long totalCount = 0;
 //一页面记录数
 private static final int MAX_PAEE_SIZE = 200;
 
 public Page() {
  // TODO Auto-generated constructor stub
 }
 
 
 public List<T> getResult() {
  return result;
 }
 @SuppressWarnings("unchecked")
 public <M extends T> void setResult(List<M> result) {
  this.result = (List<T>) result;
 }
 
 
 public long getTotalCount() {
  return totalCount;
 }
 public void setTotalCount(long totalCount) {
  this.totalCount = totalCount;
 }
 
 public int getTotalPages(){
  if(totalCount == 0){
   return 0;
  }else{
   int count = (int) (totalCount / pageSize);
   if(totalCount % pageSize > 0){
    count = count + 1 ;
   }
   return count;
  }
 }
 //下一页
 public boolean isHasNext() {
  return (pageNo + 1 <= getTotalPages());
 }
 public int getNextPage(){
  if (isHasNext())
   return pageNo + 1;
  else
   return pageNo;
 
 }
 //上一页
 public boolean isHasPre() {
  return (pageNo - 1 >= 1);
 }
 public int getPrePage() {
  if (isHasPre())
   return pageNo - 1;
  else
   return pageNo;
 }
 
}
package com.paging;
 
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
 
@SuppressWarnings("serial")
public class Parameter implements Serializable{
 
 //默认一页记录数
 public static final int DEFAULT_PAGE_SIZE = 2;
 
 public static final boolean DEFAULT_AUTO_COUNT = true;
 protected int pageNo = 1;
 protected int pageSize = DEFAULT_PAGE_SIZE;
 protected boolean autoCount = DEFAULT_AUTO_COUNT;
 //用来存放数据库操作的条件
 private Map<String, Object> filters = new LinkedHashMap<String, Object>();
 
 public int getPageSize() {
  return pageSize;
 }
 public void setPageSize(int pageSize) {
  if(pageSize > 0){
   this.pageSize = pageSize;
  }
 }
 public boolean isPageSizeSetted() {
  return pageSize > -1;
 }
 
 
 public int getPageNo() {
  return pageNo;
 }
 public void setPageNo(int pageNo) {
  if(pageNo > 0){
   this.pageNo = pageNo;
  }
 
 }
 
 
 public Map<String, Object> getFilters() {
  return filters;
 }
 public void setFilters(Map<String, Object> filters) {
  this.filters = filters;
 }
 public void addFilters(String propertyName, Object propertyValue){
  this.filters.put(propertyName, propertyValue);
 }
 public boolean isFiltersSetted(){
  return filters != null && !filters.isEmpty();
 }
 public boolean isFiltersed(){
  return filters != null && filters.size() > 0;
 
 }
}
 
3.js用于控制和触发分页栏的按钮
// 上下页
function pageInfo(pageNo) {
 $("#pageNo").val(pageNo);
 $("#pageForm").submit();
}
 
//分页确定
function inputPageNo(pageNo){
 var num = $.trim($("#numberSize").val());
 num = parseInt(num);
 if (isNaN(num)) {
  return;
 } else if (num == ""){
  return;
 } else if (num<1){
  return;
 } else if (num > pageNo){
  return;
 } else {
  $("#pageNo").val(num);
  $("#pageForm").submit();
 }
}
 
//每页显示条数
function pageSize(size){
 $("#pageNo").val(1);
 $("#pageSize").val(size);
 $("#pageForm").submit();
}
 
 
function prePage(pageNo) {
 if(pageNo < 1) {
  pageNo = 1;
 }
 pageInfo(pageNo);
}
 
function nextPage(pageNo, totalPage) {
 if(pageNo > totalPage) {
  pageNo = totalPage;
 }
 pageInfo(pageNo);
}
 
4.测试的页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>This is the index.jsp</title>
<script type="text/javascript" src="/js/pageInfo.js"></script>
<script type="text/javascript" src="/js/jquery.js" ></script>
</head>
<body>

<form action="/pudding/list.do" method="post" id="pageForm">
<input type="hidden" name="pageNo" id="pageNo" value="${page.pageNo}" />
<input type="hidden" name="pageSize" id="pageSize" value="${page.pageSize}" />
</form>


<c:forEach items="${page.result}" var="accountBook" varStatus="vs">
<tr>
<td><p>${vs.count}</p></td>
<td><p>${accountBook.accountId}</p></td>
<td><p>${accountBook.costMany}</p></td>
</c:forEach>

------------------------------------------
  <div>${pageInfo}</div> 
------------------------------------------
</body>
</html>
 
5.mvc
--------------------------------------------------------------------------------------------
 public Page<AccountBook> findAll(Page<AccountBook> page){
  StringBuffer sql = new StringBuffer("select * from accountbook");
  String sql1 = "select count(*) from accountbook";
   int totalCount = jdbcTemplate.queryForInt(sql1);
   page.setTotalCount(totalCount);
 
  if (page.isPageSizeSetted()) {
//分页的重点,用limit来做
   sql.append(" limit " + (page.getPageNo() - 1) * page.getPageSize() + "," + page.getPageSize());
  }
  try {
   logger.info("" + sql.toString());
   List<AccountBook> accountBooks = jdbcTemplate.query(sql.toString(), new RowMapper<AccountBook>(){
 
    public AccountBook mapRow(ResultSet rs, int rowNum)
      throws SQLException {
     // TODO Auto-generated method stub
     AccountBook accountBook = new AccountBook();
     accountBook.setAccountId(rs.getInt("accountId"));
     accountBook.setCostMany(rs.getLong("costMany"));
     return accountBook;
    }
   
   });
   page.setResult(accountBooks);
   logger.info("获取记录成功");
  } catch (Exception e) {
   // TODO: handle exception
   e.printStackTrace();
   logger.error("获取记录失败", e);
   return null;
  }
  return page;
 }
--------------------------------------------------------------------------------------------
 public Page<AccountBook> findAll(Page<AccountBook> page){
  return accountBookDao.findAll(page);
 
 }
--------------------------------------------------------------------------------------------
 public String list(HttpServletRequest request,Page<AccountBook> page){
  page = accountBookManager.findAll(page);
  for (AccountBook accountBook : page.getResult()) {
   logger.info("---"+accountBook.getCostMany());
  }
  request.setAttribute("page", page);
  request.setAttribute("pageInfo", PageInfo.getAdminPagingNavigation(page));
  return "/paging/page";
 }
--------------------------------------------------------------------------------------------
 
 
原文地址:https://www.cnblogs.com/krystal0901/p/5558312.html