表格分页实现

1.后台controller层分页控制:

标有(设置)处需要更改为显示表格内容,标有(可设置) 可以根据需要设置;

	//分页控制实现
	@RequestMapping(value="/queryByPage")
	private String queryByPage(WarnIndex warnindex,Model model,HttpServletRequest request){
		List<WarnIndex> list=wis.queryAll();//表内容(设置)
		List<WarnIndex> listTab=new ArrayList<WarnIndex>();
		
		int page=Integer.parseInt(request.getParameter("page")); //当前页号
		int row=Integer.parseInt(request.getParameter("row"));; //每页行数
		
		int end=5; //显示页码长度(可设置)
		int mid=(int) Math.floor(end/2); //中间位数,向下取整
		int length=list.size(); //总条数
		int sum=(int)Math.ceil(length/(row*1.0)); //总页数
		if(sum==0){//表格为空时设置page=0
			page=0;
		}
		//取行信息
		int k=page*row;
		if(k>length){						
			for(int i=k-row;i<length;i++){
				listTab.add(list.get(i));
			}
		}else{
			for(int i=k-row;i<k&&k>0;i++){
				listTab.add(list.get(i));
			}
		}
		int p1=page-mid;
		int p2=page+mid;
		//取页信息
		if (end>sum) {
			p1=1;
			p2=sum;
		}else if (p1<=0) {
			p1=1;
			p2=end;
		}else if(p2>sum){
			p1=sum-end+1;
			p2=sum;
		}
		model.addAttribute("listTab",listTab);
		model.addAttribute("p1",p1);
		model.addAttribute("p2",p2);
		model.addAttribute("page",page);
		model.addAttribute("row",row);
		model.addAttribute("length",length);
		model.addAttribute("sum",sum);
		return "jkyj/warnIndexList";//返回页面(设置)
	}

2.前台jsp使用C标签实现分页:

c标签库需引入:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

css引入:

<link href="../css/bootstrap/bootstrap.css" type="text/css" rel="stylesheet" />

js引入:

<script src="../js/jquery-3.1.1.min.js"></script>
<script src="../js/bootstrap.min.js"></script>

jsp分页实现,标有(设置)处需要更改为显示表格内容;

<table id="tab" class="table table-striped">
    <thead>
        <tr>
            <th>ID</th>
            <th>监控字段名</th>
            <th>监控档案名 </th>
            <th>预警规则</th>
            <th>备注</th>
            <th>操作</th></tr>
    </thead>
    <tbody style="text-align:center">
        <c:choose>
            <c:when test="${length!=0}">
                <c:forEach items="${listTab}" var="items" varStatus="status">
                    <!-- 表格信息(设置) -->
                    <tr>
                        <td>${page*row-row+status.index+1}</td>
                        <td>${items.warnindexItem}</td>
                        <td>${items.warnindexSub}</td>
                        <td>${items.warnindexRule}</td>
                        <td>${items.remark}</td>
                        <td>
                            <a href="../warnindex/form?id=${items.warnindexId}">修改</a>
                            <a href="../warnindex/delById?id=${items.warnindexId}">删除</a></td>
                    </tr>
                </c:forEach>
            </c:when>
        </c:choose>
    </tbody>
</table>
<!-- 分页:页面底部显示-->
<div class="pagination pagination-centered pagination-small">
    <span>${length}条 共${sum}页  </span>
    <ul id="page">
        <!-- 首页-->
        <c:choose>
            <c:when test="${length!=0&&page!=1}">
                <li>
                    <a href="/ssm/warnindex/queryByPage?page=1&row=${row}">首页</a></li>
            </c:when>
        </c:choose>
        <!-- 上一页 -->
        <c:choose>
            <c:when test="${length!=0&&(page-1)>0}">
                <li>
                    <a href="/ssm/warnindex/queryByPage?page=${page-1}&row=${row}">上一页</a></li>
            </c:when>
        </c:choose>
        <!-- 中间页 -->
        <c:choose>
            <c:when test="${length!=0}">
                <c:forEach begin="${p1}" end="${p2}" var="i">
                    <c:choose>
                        <c:when test="${i==page}">
                            <li class="active">
                                <a href="/ssm/warnindex/queryByPage?page=${i}&row=${row}">${i}</a></li>
                        </c:when>
                        <c:otherwise>
                            <li>
                                <a href="/ssm/warnindex/queryByPage?page=${i}&row=${row}">${i}</a></li>
                        </c:otherwise>
                    </c:choose>
                </c:forEach>
            </c:when>
        </c:choose>
        <!-- 下一页 -->
        <c:choose>
            <c:when test="${length!=0&&(page+1)<=sum}">
                <li>
                    <a href="/ssm/warnindex/queryByPage?page=${page+1}&row=${row}">下一页</a></li>
            </c:when>
        </c:choose>
        <!-- 下一页 -->
        <c:choose>
            <c:when test="${length!=0&&page!=sum}">
                <li>
                    <a href="/ssm/warnindex/queryByPage?page=${sum}&row=${row}">尾页</a></li>
            </c:when>
        </c:choose>
    </ul>   
    <!-- 页数设置 -->
    <select id="row" name="flag" style="width:55px;height: 26px;margin-bottom: 6px;">
        <c:forEach begin="5" end="20" step="5" var="i">
            <c:choose>
                <c:when test="${row==i}">
                    <option selected="selected" value="${i}">${i}</option></c:when>
                <c:otherwise>
                    <option value="${i}">${i}</option></c:otherwise>
            </c:choose>
        </c:forEach>
    </select>
    <span>条/页</span>
</div>
<!-- end分页 -->

js实现每页显示条数响应:

<script>
	$("#row").change(function() {
		location.href='/ssm/warnindex/queryByPage?page=1&row='+$("#row").val();
	});
</script>

3.首次跳转路径设置:

url路径为controller层对应分页函数路径,初始页数page不需要更改,每页显示条数row可根据需要更改,初始值为10;
/ssm/warnindex/queryByPage?page=1&row=10


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
package com; public class Pager { private int totalRows = 0; // 记录总数 private int totalPages = 0; // 总页数 private int pageSize = 10; // 每页显示数据条数,默认为10条记录 private int currentPage = 1; // 当前页数 private boolean hasPrevious = false; // 是否有上一页 private boolean hasNext = false; // 是否有下一页 public int getSearchFrom() { return (currentPage - 1) * pageSize; } public Pager() { } public void init(int totalRows) { this.totalRows = totalRows; this.totalPages = ((totalRows + pageSize) - 1) / pageSize; refresh(); // 刷新当前页面信息 } /** * * @return Returns the currentPage. * */ public int getCurrentPage() { return currentPage; } /** * * @param currentPage * current page * */ public void setCurrentPage(int currentPage) { this.currentPage = currentPage; refresh(); } /** * * @return Returns the pageSize. * */ public int getPageSize() { return pageSize; } /** * * @param pageSize * The pageSize to set. * */ public void setPageSize(int pageSize) { this.pageSize = pageSize; refresh(); } /** * * @return Returns the totalPages. * */ public int getTotalPages() { return totalPages; } /** * * @param totalPages * The totalPages to set. * */ public void setTotalPages(int totalPages) { this.totalPages = totalPages; refresh(); } /** * * @return Returns the totalRows. * */ public int getTotalRows() { return totalRows; } /** * * @param totalRows * The totalRows to set. * */ public void setTotalRows(int totalRows) { this.totalRows = totalRows; refresh(); } // 跳到第一页 public void first() { currentPage = 1; this.setHasPrevious(false); refresh(); } // 取得上一页(重新设定当前页面即可) public void previous() { if (currentPage > 1) { currentPage--; } refresh(); } // 取得下一页 public void next() { //System.out.println("next: totalPages: "
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值