快速分页:jsp标签pager-taglib
一:简介
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的更多相关文章
- Jsp标签字典开发_基于Spring+Hibernate
目录 1. Jsp标签字典开发_基于Spring+Hibernate 1.1. 简述 1.2. 定义DictItem实体 1.3. 定义字典的@interface 1.4. 定义字典缓存类 1.5. ...
- Java开源JSP标签库
01displytag 与Struts结合使用最出名的一个tag主要是显示表格数据很漂亮.完善. 02cewolf tag 用来在web上显示复杂图形报表的一个jsp tag. 03Loading T ...
- javaweb jdbc实现简单的数据库基本操作和servlet的作用域以及jsp标签的使用
一,工具类,分页类和连接数据库jdbc package com.direct.util; import java.sql.Connection; import java.sql.DriverManag ...
- jsp标签
常规的jsp标签,导入如下 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #3933ff } span.s1 ...
- 自定义JSP标签库及Properties使用
自定义JSP标签库及Properties使用 自定义JSP标签 自定义JSP标签技术是在JSP 1.1版本中才出现的,它支持用户在JSP文件中自定义标签,这样可以使JSP代码更加简洁. 这些可重用的标 ...
- jsp 标签、 项目全路径引用${CTX}
请根据自己的需要选择以下标签. <%@ taglib uri="/struts-tags" prefix="s"%><%@ taglib ur ...
- javaWeb 使用jsp标签进行防盗链
/** * 1.新建类继承SimpleTagSupport * 新建2个属性, 添加对应的set方法 * 覆盖doTag()方法 */ import java.io.IOException; impo ...
- 11、Jsp加强/EL表达式/jsp标签
1 Jsp基础回顾 Jsp基础 1)Jsp的执行过程 tomcat服务器完成:jsp文件->翻译成java文件->编译成class字节码文件-> 构造类对象-> 调用方法 to ...
- JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...
随机推荐
- EF(Linq)框架使用过程中的小技巧汇总 dbfunctions
这篇博客总结本人在实际项目中遇到的一些关于EF或者Linq的问题,作为以后复习的笔记或者供后来人参考(遇到问题便更新). 目录 技巧1: DbFunctions.TruncateTime()的使用 技 ...
- Mac OS X 开发环境搭建之利用 Parallel Desktop 安装 CentOS 7 [转载]
背景 在企业级软件系统中,数据库的地位是比较高的,而且一般都要求支持多种数据库,如 Oracle. DB2.MySQL 等,它们的最新版本大多都不再支持 Mac OS X 系统,所以装一个 Linux ...
- 有关定时器setTimeout()、setInterval()详解
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成. setTimeout() setTimeout函数用 ...
- vue中手机号,邮箱正则验证以及60s发送验证码
今天写了一个简单的验证,本来前面用的组件,但是感觉写的组件在此项目不是很好用,由于用到的地方比较少,所以直接写在了页面中.页面展示如图 <div> <p class=&quo ...
- NOIP2009 靶型数独
传送门 这道题比我想象之中要暴力一些. 自己一开始有一份写9*9数独的代码,自己试了一下直接交上去只有40分.看来这样是肯定不行的.考虑优化,想在中间贪贪心啥的,但是难以保证正确性.最后学了一招,从数 ...
- bzoj1025 [SCOI2009]游戏——因数DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1025 这篇博客写得真好呢:https://www.cnblogs.com/phile/p/4 ...
- 如何在单独的窗口中打开 Excel 文件
如何在单独的窗口中打开 Excel 文件 文章编号:087583 2012/11/1 18:45:29 故障现象: 如何在单独的窗口中打开 Excel 文件? 解决方案: 比较安全的方法就是直 ...
- Code-NFine:NFine介绍
ylbtech-Code-NFine:NFine介绍 1. NFine平台介绍返回顶部 1. 使用时请务必保留来源,请勿用于违反我国法律的web平台.如诈骗等非法平台网站.版权最终解释权归<NF ...
- UI:KVO、KVC
什么是KVC 什么是 KVO ? KVC:(NSKey ValueCoding)”键-值 编码“是一种间接的访问对象属性(字符串表征)的机制.对象的属性都可以通过使用KVC机制用相同的方式访问.我们 ...
- div 加滚动条的方法
div 加滚动条的方法: <div style="position:absolute; height:400px; overflow:auto"></div> ...