一:简介

  Pager-taglib,支持多种风格的分页显示。实际上它是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组 合,会形成多种不一样的分页页面,风格各异。它既可以对后台传入的集合进行分页,也可以从数据库中取出要显示那一页的数据。这里只关注后一种方式。

二:知识要点

  1.pg:pager

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

  • url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数
  • items:总记录数,pager标签正是根据这个值来计算分页参数的
  • maxPageItems:每页显示的行数,默认为10
  • maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10
  • isOffset:与pg:item配套使用
  • export:这个属性比较重要,文档也对此作好相对长篇幅的说明。这个属性是 让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有pageOffset及pageNumber,即页码偏移 量及页码。通过这两个变量名,可以在Jsp或Java里面从Request里获得。Export属性接受的值还有表达式,如 currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage的变量,这个变量将被保存 到Request中,在Jsp或Java中可以得到。

  2.pg:param

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

  3.pg:index

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

  4.pg:first

  第一页标签

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - 首页第一行的索引值
  • lastItem - 首页最后一行的索引值

  5.pg:pre

  上一页标签

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - 前页第一行的索引值
  • lastItem - 前页最后一行的索引值

  6.pg:pages

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

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - pageNumber这个页码指定的那一页的第一行的索引值
  • lastItem - pageNumber这个页码指定的那一页的最后一行的索引值

  7.pg:next

  下一页标签

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - 下页第一行的索引值
  • lastItem - 下页最后一行的索引值

  8.pg:last

  最后一页标签

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - 尾页第一行的索引值
  • lastItem - 尾页最后一行的索引值

三:使用步骤

1,拷贝pager-taglib.jar包到你的应用的\WEB-INF\lib下;
2,在JSP页面中使用taglib指令引入pager-taglib标签库,一般会和jstl标记一起使用:

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

3,个人整理的模板pager_taglib.jsp:(注:param参数是通过jsp:param标签传递进来的参数)

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager"%>
<script type="text/javascript">
function selectPageSize(field){
window.location = document.getElementById("firstPage").href + "&pageSize="+field.value;
}
</script>
<pg:pager url="${param.url }" items="${param.totalCount }" maxPageItems="${param.pageSize }" maxIndexPages="10"
  export="currentPageNumber=pageNumber">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="33%"><div align="left"><span class="STYLE22">
共有<strong> ${param.totalCount }</strong> 条记录,
当前第<strong> ${currentPageNumber }</strong> 页,
共 <pg:last>
<strong>${pageNumber }</strong> 页
</pg:last>
</span></div>
</td>
<td width="67%" align=right vAlign="center" noWrap>
<c:forEach items="${param.params}" var="p">
<pg:param name="${p}"/>
</c:forEach>
<pg:first>
<a href="${pageUrl }" id="firstPage">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl }">上页</a>
</pg:prev>
<pg:pages>
<c:choose>
<c:when test="${currentPageNumber eq pageNumber }">
<a href="${pageUrl }"><font color="red">${pageNumber }</font></a>
</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>
每页记录数:
<select name="pagesize" onchange="selectPageSize(this)" >
<c:forEach begin="10" end="50" step="10" var="i">
<option value="${i }" <c:if test="${pageSize eq i }">selected</c:if> >${i }</option>
</c:forEach>
</select>
</td>
</tr>
</table>
</pg:pager>

4,在分页的jsp页面给这个标签库传递多个参数:(以个人修改整理后的分页模板为例)

(1)url:表单提交的地址

(2)pageSize:每页显示的记录数

(3)totalCount:总共的记录数

(4)params:过滤条件参数,可多个或者没有

分页的jsp页面使用示例如下:

<jsp:include page="../common/pager_taglib.jsp">
<jsp:param name="totalCount" value="${totalCount }"/>
<jsp:param name="pageSize" value="${pageSize }"/>
<jsp:param name="url" value="ArticleList.do"/>
<jsp:param name="params" value="title,source,point"/>
</jsp:include>

5,后台接收的参数:

(1)pager.offset:当点击第N页时,会以get的方式传递分页的起点索引。如点击第一页时,起点索引当然为0。

四:注意事项

(1)原官方jar包有bug,在UTF-8编码页面下传递中文会有乱码问题,可修改源码,对传入参数转码UTF-8,然后再打成jar包使用即可。

(2)对于以get方式提交进行分页出现乱码的话,可在tomcat配置文件server.xml的<Connector>标签添加URIEncoding="UTF-8"。

小小总结:这里体现了设计原则:封装变化。把可能变化的部分取出并封装起来,以便以后可以轻易改动或扩充此部分,而不影响不需要变化的部分。

最后,本文参考于博客:http://www.cnblogs.com/hellojava/archive/2012/12/31/2840415.html

快速分页:jsp标签pager-taglib的更多相关文章

  1. Jsp标签字典开发_基于Spring+Hibernate

    目录 1. Jsp标签字典开发_基于Spring+Hibernate 1.1. 简述 1.2. 定义DictItem实体 1.3. 定义字典的@interface 1.4. 定义字典缓存类 1.5. ...

  2. Java开源JSP标签库

    01displytag 与Struts结合使用最出名的一个tag主要是显示表格数据很漂亮.完善. 02cewolf tag 用来在web上显示复杂图形报表的一个jsp tag. 03Loading T ...

  3. javaweb jdbc实现简单的数据库基本操作和servlet的作用域以及jsp标签的使用

    一,工具类,分页类和连接数据库jdbc package com.direct.util; import java.sql.Connection; import java.sql.DriverManag ...

  4. jsp标签

    常规的jsp标签,导入如下 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #3933ff } span.s1 ...

  5. 自定义JSP标签库及Properties使用

    自定义JSP标签库及Properties使用 自定义JSP标签 自定义JSP标签技术是在JSP 1.1版本中才出现的,它支持用户在JSP文件中自定义标签,这样可以使JSP代码更加简洁. 这些可重用的标 ...

  6. jsp 标签、 项目全路径引用${CTX}

    请根据自己的需要选择以下标签. <%@ taglib uri="/struts-tags" prefix="s"%><%@ taglib ur ...

  7. javaWeb 使用jsp标签进行防盗链

    /** * 1.新建类继承SimpleTagSupport * 新建2个属性, 添加对应的set方法 * 覆盖doTag()方法 */ import java.io.IOException; impo ...

  8. 11、Jsp加强/EL表达式/jsp标签

    1 Jsp基础回顾 Jsp基础 1)Jsp的执行过程 tomcat服务器完成:jsp文件->翻译成java文件->编译成class字节码文件-> 构造类对象-> 调用方法 to ...

  9. JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

    JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...

随机推荐

  1. Android 上的 制表符(tab) —— 一个奇妙的字符 (cocos2dx crash)

    今天測试发现了游戏的一个问题,系统邮件,假设发了tab,在android上一打开邮件内容就会crash.并且他们非常确定是tab的问题. 凭我多个月的经验(确实没多年. . .)来看.从来没听说在an ...

  2. VS2005断点失效的问题

    VS2005下使用VC,部分断点无效,显示『当前不会命中断点.还没有为该文档加载任何符号』. 试过以下一些方法: 1.无效断点所在的项目和启动项目的设置:项目->属性->配置属性-> ...

  3. Android 的assets文件资源与raw文件资源读取

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zpf8861/article/details/34504183   res/raw和assets的同 ...

  4. BAPI_PO_CEATE 与PO_1

  5. ES6 中的let 声明变量

    1.let是声明的是块级变量,不会污染全局,一般条件与循环中会用到: 2.let  不可以变量提升: 3.let不遵循作用域,一个作用域内如果有该变量,就不会到全局去找,也不可以在一个作用域重复声明一 ...

  6. Kafka使用经验小结

    本文尽量从一个使用者的角度去记录一些在实战当中使用Kfaka所需要关注的要点,这样可能会贴切更多的读者,本文并不会介绍太多的Kafka的一些架构层次设计的知识,因为网上已经有一大堆的重复搬运的资料任由 ...

  7. I.MX6 按键开关机 PMIC 检测

    /************************************************************************* * I.MX6 按键开关机 PMIC 检测 * 说 ...

  8. [SHOI 2015] 脑洞治疗仪

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4592 [算法] 对于操作1 , 我们首先查询区间[l0 , r0]中有多少个1 , ...

  9. SPOJ FIBOSUM && FIBOSUM2

    Fibonacci数列定义为 $$f_n = f_{n-1}+f_{n-2}, \text{以及初值}f_0=0, f_1=1.$$ 本文之讨论,皆在模$10^9+7$意义下. FIBOSUM 给定$ ...

  10. C++中的new用法总结

    前段时间复习面试的时候,看到这个问题经常有问到,我这个小白就看了些博客和书,总结一下. new可以说是个一个关键字,也可以说是一个运算符,并且可以被重载. 1.new operator 这个就是平时最 ...