分页技术框架(Pager-taglib)学习一(页面分页)

来源:互联网 发布:全民公敌 知乎 编辑:程序博客网 时间:2024/06/07 23:01
一、Pager-taglib简介
    1、Pager-taglib,支持多种风格的分页显示。实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多种不一样的分页页面,风格各异,她自带的DEMO就有八种左右的分页风格(在pager-taglib-2.0.war包下的WEB-INF\jsp 中),包括Google的分页风格。而需要订制自已的风格的分页页面也非常简单。
  
2、分页方式有两种:
    一种是:页面分页,即从Action或者其他控制器中得到一个List,在页面上 通过<pg:item>进行自动分页。适合查询结果不大的情况。
    第二种是:数据库分页,即通过把 pageSize,pageNo两参数传给后台进行数据库分页。适合大量查询。

   二、Pager-taglib标签详解
   1、<pg:pager>标签分页时我们重点设置的就是这个标签):这个标签用来设置分页的总体参数,重要参数说明:
     url:分页的链接根地址,pager标签会在这个链接上附加分页参数pager.offset,后台可根据这个参数分页, 也可自行在URL上添加参数。

    items:总记录数,pager标签正是根据这个值来计算分页参数的。在页面分页时,此参数可以不写,后台会自动计算出分页参数。如果你写的话将以你写的为准

    maxPageItems:每页显示的行数,也即每页显示的记录数,默认为10。 不写此标签,你会发现分页的条数在小于10的时候显示不出来一些数据。当大于10的时候则会出现重复的记录! 如:maxPageItems = "4"

    maxIndexPages:在循环输出页码的时候,最大输出多少个页码(也就是最多显示多少个页码),默认是10.如:maxIndexPages="3"

     export:这个属性比较重要,这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有 pageOffset及pageNumber,即页码偏移量及页码通过这两个变量名,可以在Jsp或servlet(或者Action)里面从Request里获得。Export属性接受的值还有表达式,
如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage(自定义的)的变量,这个变量将被保存到Request中,在Jsp或servlet中可以得到
通常设为:export="pageOffset,currentPageNumber=pageNumber".这里使用currentPageNumber=pageNumber的原因是pg:pages(不是page)标签输出用于存放每次循环的页码号的变量也叫pageNumber。
   
     scope:将export暴漏出变量,设置器存储范围。取值为:request、session等。默认保存在request范围内。

     isOffset:是否允许页面偏移。取值为true、false。如果为true的话,点击页码分页时,分页中的内容是不会有变化的,并且页码可以一直向后延伸(不论是否已到达你的尾页);设为false的话会正常分页。默认false。
    index:设置索引页的动态显示方式。取值为:center(默认)、forward、half-full。具体效果自己设置查看。
    
 
说明:当我们选择不同的页号,会动态的出现其他页号,我们称之为二级分页。适用于查询结果较多,分页页数也比较多的情况,这时我们有必要对分页页号再进行分页显示。此时我们可以通过设置maxIndexPagesindex两个属性来实现二级分页。
   2、<pg:param>:
   
这个标签很有用,用来设置将要加入到URL的参数,将传入后台。使用Name属性指定即可。
   3、<pg:item>:
     表示一页中的一项,pager标签库可根据这个项的个数来计算分页参数(pageOffset),通常放在jstl循环中
   4、<pg:index>:
    这个标签说明分页条显示的内容,它可以包含下面这些标记。

   5、<pg:first>:
   【第一页的标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数,即框架暴漏出的参数
pageNumber - 页码
firstItem - 首页第一条记录的索引值
lastItem - 首页最后一条记录的索引值

   6、<pg:prev>:
   【上一页标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数,即框架暴漏出的参数
pageNumber - 页码

    7、<pg:next>
    【下一页标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数,即框架暴漏出的参数
pageNumber - 页码

    8、<pg:last>重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数,即框架暴漏出的参数
pageNumber - 页码

    9、<pg:pages>【这个标签用来循环输出页码信息】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数,即框架暴漏出的参数
pageNumber - 页码
firstItem - pageNumber这个页码指定的那一页的第一行的索引值
lastItem - pageNumber这个页码指定的那一页的最后一行的索引值

  三、页面分页pager-taglib标签的基本结构
 

  注意:<pg:index>标签主要是分页导航的风格,我们可以自定义(如下面示例中的两个风格,其实也是改编自war包中八种风格的jsp文件),也可以使用在pager-taglib-2.0.war包下的WEB-INF\jsp 八种风格的jsp文件,即使用静态导入或者动态导入的方式。如
    < pg:index>
     < %@ include file="/WEB-INF/jsp/google.jsp"%>
    < /pg:index>
 

    < pg:index>
    < jsp:include page="/WEB-INF/jsp/pager_conn.jsp" flush="true"></jsp:include>
    < /pg:index>

  静态导入前提:两页面合并后一定要能正确编译(即合并后一定要有6中的两个jsp页面指令,合并前这两个指令分散在哪个页面无所谓)
  动态导入前提:要包含的风格文件能够独立编译(即一定要导入5中的两个jsp页面指令)
 值得注意的是八种风格的jsp文件必须拷到
/WEB-INF/jsp/目录下,并且每个jsp文件中的jsp动作指令标签(如<jsp:useBean> ) 要删除。

  呵呵,有了这些,我们分页的重点就是设置pg:pager标签的总体属性啦