zoukankan      html  css  js  c++  java
  • 使用Pager-taglib进行分页

    在.net中,我们有分页控件。在java中,我们有分页标签库。他们都已经为我们封装好了,我们只需要给这几个参数:数据、当前页码、每页记录数,就能完成分页,所以他们是大同小异的。

    今天来说说Pager-taglib 一套jsp分页标签库。

    直接看例子吧,那些基础知识看来枯燥无味,我会把他们放到最后,如果例子看不明白,再去看基础知识也不迟。



    使用

    使用之前,记得拷贝pager-taglib.jar包

    建立PageModel类以及实现分页的的Dao方法

    ①PageModel

     

    public class PageModel { 
        /** 
         * 总记录数  
         * */ 
        private int total; 
     
        /** 
         * 当前页的记录集  
         * */ 
        private List datas; 
        public int getTotal() { 
            return total; 
        }  
        public void setTotal(int total) { 
            this.total = total; 
        }  
        public List getDatas() { 
            return datas; 
        }  
        public void setDatas(List datas) { 
            this.datas = datas; 
        }  
    }  

     

    AlarmDaoImpl.java

     

    public PageModel findAllAlarm(int offset, int pagesize) { 
          
             //得到总记录数    
            String queryCountHql = "select count(*) from Alarm";     
                
            Query query = getSession().createQuery(queryCountHql);    
            int total = ((Long)query.uniqueResult()).intValue();    
                
            List datas = getSession().createQuery("from Alarm")    
                        .setFirstResult(offset)    
                        .setMaxResults(pagesize)    
                        .list();    
     
            //得到结果集    
            PageModel pm = new PageModel();    
            pm.setTotal(total);    
            pm.setDatas(datas);    
            return pm;    
     
        } 

     

    建立Action增加分页方法

     

    public String pagerTaglib() 
         {  
    // pageSize可以通过<pg:paramname="pagesize"  value="3" />在页面设定,在action中通过request.getParameter获得
          int pagesize=3;  
          int offset=0;  
     
          HttpServletRequest request = ServletActionContext.getRequest();  
          if(request.getParameter("pager.offset")!=null) 
           offset=Integer.parseInt(request.getParameter("pager.offset")); 
            
          PageModel pm=alarmManager.findAllAlarm(offset, pagesize); 
          request.setAttribute("pm", pm); 
          return "pagertaglib"; 
         } 


    建立JSP测试页面:page.jsp

     

    <!-- 导入JSTL、pagertaglib标签库-->
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
    <%@ taglib prefix="c"    uri="http://java.sun.com/jsp/jstl/core" %>   
    <%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>   
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>   
        <head>   
            <title>测试 分页</title>   
        </head>   
           
        <body>   
            <h1>测试 分页</h1>   
            <hr/>   
               
            <table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">   
            <tr bgcolor="#EFF3F7">   
              <TD align="center">ID</TD>   
              <TD align="center">内容</TD>   
              <TD align="center">时间</TD>   
              <TD align="center">相关操作</TD>   
            </tr>   
     
       <!-- 列表数据栏 -->
            <c:if test="${!empty pm.datas}">  
              <c:forEach items="${pm.datas}" var="alarm">  
                <tr bgcolor="#EFF3F7">   
                  <td align="center">${alarm.wid }</td>   
                  <td align="center">${alarm.wcontent }</td>   
                  <td align="center">${alarm.wtime}</td>   
                </tr>   
              </c:forEach>   
              </c:if>   
     
    <!-- 在列表数据为空的时候,要显示的提示信息 -->
             <c:if test="${empty pm.datas}">  
             <tr>   
                <td colspan="5" align="center" bgcolor="#EFF3F7">   
                没有找到相应的记录  
                </td>   
             </tr>   
             </c:if> 
            </table>   
     
     <!-- 在这里插入分页导航条 -->
            <pg:pager url="pagerTaglib!pagerTaglib" items="${pm.total}" export="currentPageNumber=pageNumber"maxPageItems="3">   
     
    <!-- 对url附加参数
    <pg:paramname="parentId"/>                
    如果有需要在分页之间保持某个参数,则可以使用<pg:param/>标签来定义(如parentId)
    -->
      <pg:first>   
        <a href="${pageUrl}">首页</a>   
      </pg:first>   
      <pg:prev>   
        <a href="${pageUrl }">上一页</a>   
      </pg:prev>   
     
      <pg:pages>   
        <c:choose>  
          <c:when test="${currentPageNumber eq pageNumber}">  
            <font color="red">${pageNumber }</font>   
          </c:when>   
          <c:otherwise>   
            <a href="${pageUrl }">${pageNumber }</a>   
          </c:otherwise>   
        </c:choose>  
      </pg:pages>   
     
      <pg:next>   
        <a href="${pageUrl }">下一页</a>   
      </pg:next>   
      <pg:last>   
        <a href="${pageUrl }">尾页</a>   
      </pg:last>   
    </pg:pager>   
        </body>   
    </html>   


    可以通过<pg:param>,向URL中加入参数,比如<pg:paramname="pagesize"  value="3" />

    每次单击页面导航(比如上一页)时,页码的变化,可以在action中通过request.getParameter("pager.offset")得到,只是这些变化Pager-tablib已经为我们封装好了。


    基础

    一、简介

    Pager-taglib2.0是一套jsp分页标签库,可以灵活地实现多种不同风格的分页导航页面,也可以自定义风格样式。并且它可以很好的与服务器分页逻辑分离,它既可以对后台传入的集合进行分页,也可以从数据库中取出要显示那一页的数据。

     

    二、标签介绍

    pg:pager这个标签用来设置分页的总体参数,一切分页标签都在其内工作。

    url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数

    items:总记录数,pager标签正是根据这个值来计算分页参数的

    maxPageItems:每页显示的行数,默认为10

    maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10

    isOffset:与pg:item配套使用 

    export:这个属性比较重要,文档也对此作好相对长篇幅的说明。这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有pageOffsetpageNumber,即页码偏移量及页码。通过这两个变量名,可以在JspJava里面从Request里获得。Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage的变量,这个变量将被保存到Request中,在JspJava中可以得到。

    <pg:param>用来设置将要加入到URL的参数。使用Name属性指定即可,用于参数传递。

    <pg:index>这个标签说明分页条显示的内容,在这里你可以设置各种风格的分页显示方式。

    pg:first第一页标签

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem-首页第一行的索引值

    lastItem-首页最后一行的索引值

    pg:pre上一页标签

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem-前页第一行的索引值

    lastItem-前页最后一行的索引值

    pg:pages这个标签用来循环输出页码信息

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem- pageNumber这个页码指定的那一页的第一行的索引值

    lastItem- pageNumber这个页码指定的那一页的最后一行的索引值

    pg:next下一页标签

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem-下页第一行的索引值

    lastItem-下页最后一行的索引值

    pg:last最后一页标签

    pageUrl-分页链接URL地址

    pageNumber-页码

    firstItem-尾页第一行的索引值

    lastItem-尾页最后一行的索引值


  • 相关阅读:
    2020-2021第一学期《网络空间安全导论》第十周自习总结
    2020-2021第一学期2024"DCDD"小组第九周讨论
    2020-2021第一学期《网络空间安全导论》第九周自习总结
    2020-2021第一学期2024"DCDD"小组第八周讨论
    2020-2021第一学期20202411《网络空间安全导论》第八周自习总结
    2020-2021第一学期2024"DCDD"小组第七周讨论
    2020-2021第一学期《计算机科学概论》第七周自习总结
    2020-2021第一学期2024"DCDD"小组第七周讨论
    2020-2021第一学期《计算机科学概论》第六周自习总结
    2020-2021第一学期20202411欧几里得算法
  • 原文地址:https://www.cnblogs.com/pangblog/p/3253834.html
Copyright © 2011-2022 走看看