在.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进行分页的更多相关文章

  1. 用jquery.pager.js实现分页

    1.html <link href="/stylesheets/Pager.css" rel="stylesheet" type="text/c ...

  2. jQuery.pager无刷新分页

    刚刚学习前端的时候,需要一个无刷新的分页功能,找了一个不错的,大家也有很大分享,在这里写一个自己的部分代码,前后端都有,需要的小伙伴可以参考一下,代码不是完整的. 直接上伪代码<样式代码省略,部 ...

  3. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  4. pager-taglib分页处理的使用

    pager-taglib是java中一个用于分页的小的框架.下面简单介绍一下它的具体使用. 一.环境的搭建: 将pager-taglib-2.0.war包拷贝到Tomcat的webapps下.启动To ...

  5. 分页技术框架(Pager-taglib)学习二(SSH数据库分页)

    一.Pager-taglib数据库分页前提    Pager-taglib分页标签也可以实现数据库分页,与页面分页不同的是需要给后台传两个参数,一个是pageNo(当前页数)或pageOffset(偏 ...

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

    一.Pager-taglib简介     1.Pager-taglib,支持多种风格的分页显示.实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多 ...

  7. asp.net webform 自定义分页控件

    做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...

  8. asp.net mvc 自定义pager封装与优化

    asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...

  9. 存储过程分页 Ado.Net分页 EF分页 满足90%以上

    存储过程分页: create proc PR_PagerDataByTop @pageIndex int, @pageSize int, @count int out as select top(@p ...

  10. springJDBC实现mysql简单分页

    效果图:

随机推荐

  1. MDK常用快捷键

    一.常用编译相关的快捷键 1.编译(单个文件)  Ctrl+F7 2.连接 F7 二.常用调试相关的快捷键 1.运行/停止     Ctrl+F5 2.Run(全速运行)  F5 3.Stop Deb ...

  2. 注解方式传LIST@RequestBody

    在SpringMVC中使用注解方式传List类型的参数时,要使用@RequestBody注解而不是@RequestParam注解 //创建文件夹 @RequestMapping(value=" ...

  3. 【转载】C# HttpWebRequest 发送SOAP XML

    调用webservice的几种方法: 方法一:添加web引用(简单/方便 局限客户端是.net) 方法二:Post xml(本文重点讲述) 方法三:使用微软MSXML2组件(好像在window ser ...

  4. capitalize()在Python中含义

    Python为string对象提供了转换大小写的方法:upper() 和 lower(). 还不止这些,Python还为我们提供了首字母大写,其余小写的capitalize()方法, 以及所有单词首字 ...

  5. 【POJ 2152】 Fire (树形DP)

    Fire   Description Country Z has N cities, which are numbered from 1 to N. Cities are connected by h ...

  6. java学习多线程之卖票示例

    这一节我们来说一个示例就是卖票示例: 需求: 我们现在有100张票,然后分四个窗口来卖,直到卖完为止. 思路: 1.先定一个一个票类,描述票的属性,还有打印卖出的票,并且实现Runnable中的run ...

  7. Linux 日常使用指令大全

    001.日常维护常用查询命令 #top    显示系统进程 #clear  清理屏幕信息 #cat /etc/redhat-release  查看系统版本信息 #cat /proc/version   ...

  8. c语言中%p指针

    %p与指针对应,是输出指针的地址 如: char * p="abc"; ...... printf("The address %p is %s", p, p); ...

  9. 面向中国 Azure 开发者发布开源解决方案指南

     发布于 2014-05-23 作者 刘 天栋 Azure 是一个开放.灵活的云平台,可支持大量且不断增长的开源应用程序.框架和语言.微软及微软开放技术通过与全球及中国本地的开源社区不懈地合作,将 ...

  10. 阮老师讲解TF-IDF算法

    TF-IDF与余弦相似性的应用(一):自动提取关键词   作者: 阮一峰 日期: 2013年3月15日 这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题. 有一篇很长的文章,我要用计算机提取它 ...