自定义的分页组件

  • 使用方法,在要进行分页的页面,使用jsp:include 标签动态包含本组件
    该组件需要的参数有

    1. url 需要进行分页的网页路径
    2. currentPage 定义当前所在页数,如果没有定义,则默认是第一页
    3. linesize 定义每页显示的数据个数,如果没有定义,则默认是5行
    4. allRecorders 保存总记录的统计结果,需要从包含页面传入
    5. column 模糊查询的数据列
    6. keyWord 模糊查询的关键字
  • 组件内容

<%@ page pageEncoding="UTF-8"%>


<%
    request.setCharacterEncoding("UTF-8") ;
    String url = request.getParameter("url") ;  // 提交路径
    int currentPage = 1 ;   // 当前所在的页面,默认是在第1页
    int lineSize = 1 ;  // 表示每页显示的数据行数
    int allRecorders = 0 ;  // 保存总记录的统计结果
    int pageSize = 1 ;  // 总页数
    String column = request.getParameter("column") ;
    String keyWord = request.getParameter("keyWord") ;
%>
<%
    try {
        currentPage = Integer.parseInt(request.getParameter("currentPage")) ;
    } catch (Exception e) {}
    try {
        lineSize = Integer.parseInt(request.getParameter("lineSize")) ;
    } catch (Exception e) {}
    try {
        allRecorders = Integer.parseInt(request.getParameter("allRecorders")) ;
    } catch (Exception e) {}
    if ("null".equals(column) || column == null || "".equals(column)) {
        column = "" ;
    }
    if ("null".equals(keyWord) || keyWord == null || "".equals(keyWord)) {
        keyWord = "" ;
    }
%>
<%
    int seed = 2 ;  // 定义一个种子数,用于判断是否会有“.”
    if (allRecorders > 0) {
        pageSize = (allRecorders + lineSize - 1) / lineSize ;
    }
%>
  • "> <% if (currentPage == 1) { %> 1 <% } else { %> 1
  • <% } %> <% if (pageSize > seed * 2) { // 数据量很大,需要进行省略号的出现 if (currentPage <= seed * 2) { int startPage = 2 ; // 从第2页开始显示 int endPage = currentPage + seed * 2 ; if (endPage >= pageSize) { endPage = pageSize - 1 ; } for (int x = startPage ; x <= endPage ; x ++) { %>
  • "><%=x%>
  • <% } if ((currentPage + seed * 2) < pageSize - 1) { %>
  • ...
  • <% } } else { // 需要分两段显示了 %>
  • ...
  • <% int startPage = currentPage - seed ; int endPage = currentPage + seed ; if (endPage >= pageSize) { endPage = pageSize - 1 ; } for (int x = startPage ; x <= endPage ; x ++) { %>
  • "><%=x%>
  • <% } if ((currentPage + seed * 2) < pageSize) { // 后面还有很多页 %>
  • ...
  • <% } else { // 后续的页码需要出现 for (int x = currentPage + seed + 1 ; x < pageSize ; x ++ ) { %>
  • "><%=x%>
  • <% } } } } %> <% if (pageSize != 1) { %>
  • "> <% if (currentPage == pageSize) { %> <%=pageSize%>
  • <% } else { %> <%=pageSize%> <% } %> <% } %>
  • 使用示例
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="cn.mldn.service.*" %>
<%@ page import="cn.mldn.util.factory.*" %>
<%@ page import="cn.mldn.vo.*" %>
<%@ page import="java.util.*" %>


<%
    request.setCharacterEncoding("utf-8");
    String basePath = request.getScheme() + "://" + 
        request.getServerName() + ":" + request.getServerPort() + 
        request.getContextPath() + "/" ;
%>
<%!
    public static final String GOODS_LIST_URL="oages/back/admin/goods/goods_list.jsp";
    public static final String GOODS_ADD_URL = "pages/back/admin/goods/goods_add.jsp" ;
    public static final String GOODS_DELETE_URL = "pages/back/admin/goods/goods_delete_do.jsp" ;
    public static final String GOODS_EDIT_URL = "pages/back/admin/goods/goods_edit.jsp" ;
%>
<%
    //定义当前所在页数,默认为第一页
    int currentPage = 1;
    //定义每页显示的数据个数,默认是每页显示5行数据
    int lineSize = 5;
    //定义总页数默认为1
    int pageSize = 1;
    //保存总记录数
    int allRecorders = 0;
    //定义模糊查询的数据列
    //在搜索分页组件中,会自动将字符串进行拆分处理,字符串格式为"显示的文字信息:模糊查询数据列名称"
    String columnData = "商品名称:name";
    //column和keyWord的参数是在分页搜索组件中获取到的
    String column=request.getParameter("col");
    String keyWord=request.getParameter("ky");
    //从页面中接收定义的当前所在页 和 每页显示个数的信息
    //其中cp表示当前所在页,ls表示每页显示的个数
    //由于数据类型的转换异常无法处理,所以直接在浏览器中抛出异常
    try{
        currentPage = Integer.parseInt(request.getParameter("cp"));
    }catch(Exception e){}
    try{
        currentPage = Integer.parseInt(request.getParameter("ls"));
    }catch(Exception e){}
    
    //实例化IGoodsService接口,使用list()方法,取出分页查询的数据
    IGoodsService goodsService = Factory.getServiceInstance("goods.service");
    Map map = goodsService.list(currentPage, lineSize, column, keyWord);
    //取出所有商品信息
    List allGoods = (List)map.get("allGoods");
    //取出所有商品数量信息
    allRecorders = (Integer)map.get("goodsCount");
    //取出所有商品分类信息
    Map allItems = (Map)map.get("allItems");
%>

商品列表









    
 商品信息列表
<% //取出所有商品信息,进行动态生成页面 Iterator ite = allGoods.iterator(); while(ite.hasNext()){ Goods temp = ite.next(); %> <% } %>
商品名称 商品单价 商品分类 操作
<%=temp.getName() %> <%=temp.getPrice() %> <%= allItems.get(temp.getIid())%>  编辑
  • 页面效果
image.png

你可能感兴趣的:(自定义的分页组件)