使用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标签里,可以暴露出来的变量有pageOffset及pageNumber,即页码偏移量及页码。通过这两个变量名,可以在Jsp或Java里面从Request里获得。Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage的变量,这个变量将被保存到Request中,在Jsp或Java中可以得到。
<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-尾页最后一行的索引值
使用Pager-taglib进行分页的更多相关文章
- 用jquery.pager.js实现分页
1.html <link href="/stylesheets/Pager.css" rel="stylesheet" type="text/c ...
- jQuery.pager无刷新分页
刚刚学习前端的时候,需要一个无刷新的分页功能,找了一个不错的,大家也有很大分享,在这里写一个自己的部分代码,前后端都有,需要的小伙伴可以参考一下,代码不是完整的. 直接上伪代码<样式代码省略,部 ...
- MVC如何使用开源分页插件shenniu.pager.js
最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...
- pager-taglib分页处理的使用
pager-taglib是java中一个用于分页的小的框架.下面简单介绍一下它的具体使用. 一.环境的搭建: 将pager-taglib-2.0.war包拷贝到Tomcat的webapps下.启动To ...
- 分页技术框架(Pager-taglib)学习二(SSH数据库分页)
一.Pager-taglib数据库分页前提 Pager-taglib分页标签也可以实现数据库分页,与页面分页不同的是需要给后台传两个参数,一个是pageNo(当前页数)或pageOffset(偏 ...
- 分页技术框架(Pager-taglib)学习一(页面分页)
一.Pager-taglib简介 1.Pager-taglib,支持多种风格的分页显示.实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多 ...
- asp.net webform 自定义分页控件
做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...
- asp.net mvc 自定义pager封装与优化
asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...
- 存储过程分页 Ado.Net分页 EF分页 满足90%以上
存储过程分页: create proc PR_PagerDataByTop @pageIndex int, @pageSize int, @count int out as select top(@p ...
- springJDBC实现mysql简单分页
效果图:
随机推荐
- MDK常用快捷键
一.常用编译相关的快捷键 1.编译(单个文件) Ctrl+F7 2.连接 F7 二.常用调试相关的快捷键 1.运行/停止 Ctrl+F5 2.Run(全速运行) F5 3.Stop Deb ...
- 注解方式传LIST@RequestBody
在SpringMVC中使用注解方式传List类型的参数时,要使用@RequestBody注解而不是@RequestParam注解 //创建文件夹 @RequestMapping(value=" ...
- 【转载】C# HttpWebRequest 发送SOAP XML
调用webservice的几种方法: 方法一:添加web引用(简单/方便 局限客户端是.net) 方法二:Post xml(本文重点讲述) 方法三:使用微软MSXML2组件(好像在window ser ...
- capitalize()在Python中含义
Python为string对象提供了转换大小写的方法:upper() 和 lower(). 还不止这些,Python还为我们提供了首字母大写,其余小写的capitalize()方法, 以及所有单词首字 ...
- 【POJ 2152】 Fire (树形DP)
Fire Description Country Z has N cities, which are numbered from 1 to N. Cities are connected by h ...
- java学习多线程之卖票示例
这一节我们来说一个示例就是卖票示例: 需求: 我们现在有100张票,然后分四个窗口来卖,直到卖完为止. 思路: 1.先定一个一个票类,描述票的属性,还有打印卖出的票,并且实现Runnable中的run ...
- Linux 日常使用指令大全
001.日常维护常用查询命令 #top 显示系统进程 #clear 清理屏幕信息 #cat /etc/redhat-release 查看系统版本信息 #cat /proc/version ...
- c语言中%p指针
%p与指针对应,是输出指针的地址 如: char * p="abc"; ...... printf("The address %p is %s", p, p); ...
- 面向中国 Azure 开发者发布开源解决方案指南
发布于 2014-05-23 作者 刘 天栋 Azure 是一个开放.灵活的云平台,可支持大量且不断增长的开源应用程序.框架和语言.微软及微软开放技术通过与全球及中国本地的开源社区不懈地合作,将 ...
- 阮老师讲解TF-IDF算法
TF-IDF与余弦相似性的应用(一):自动提取关键词 作者: 阮一峰 日期: 2013年3月15日 这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题. 有一篇很长的文章,我要用计算机提取它 ...