• 分页


    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";
     }
    --------------------------------------------------------------------------------------------
     
     
  • 相关阅读:
    浏览器兼容之background-size
    bootstrap学习之全局样式
    bootstrap dropdown的点击变为:hover 后自动下拉
    看完了《缔造企鹅》
    2015年阅读记录
    博士论文致谢 作一下
    如何将Visio转化为EPS? For Latex
    《乌合之众》 古斯塔夫·勒庞
    笑傲江湖
    社会化推荐(一) 理论和实践 对科学的思考
  • 原文地址:https://www.cnblogs.com/krystal0901/p/5558312.html
Copyright © 2020-2023  润新知