pager-taglib插件进行普通分页
pager-taglib是一款支持多种风格的分页显示。
多种不一样的分页页面,风格各异,她自带的DEMO就有七种左右的分页风格,包括Google的分页风格。而需要订制自已的风格的分页页面也非常简单。
接触的当天、匆匆看了下Demo和文档,发现这个很早(2002年最新版一直到现在)就已经有的东西,似 乎比较擅长显示端分页。如,把所有的数据传到页面,通过参数设定页面大小等,可能得到很完美的分页效果。
select * from user limit 0, 10
<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.csr.web.domain.User"><resultMap type="com.csr.web.domain.User" id="userResult"><result property="id" column="id" jdbcType="INTEGER" javaType="java.lang.Integer" /><result property="username" column="username" /><result property="password" column="password" /><result property="email" column="email" /></resultMap><select id="findUserPage" resultMap="userResult">select * from user limit #{_parameter.offset,jdbcType=INTEGER},#{_parameter.pagesize,jdbcType=INTEGER}</select><select id="findUserCount" resultType="int">select count(*) from user</select></mapper>
@Repositorypublic class UserDaoImpl implements UserDao {private final String FIND_USER_COUNT = "findUserCount";private final String FIND_USER_PAGE = "findUserPage";@Autowiredprivate SqlSessionTemplate sqlSessionTemplate;public List<User> findAllUser(Pager page) {return sqlSessionTemplate.selectList(FIND_USER_PAGE, page);}public int findUserCount() {return sqlSessionTemplate.selectOne(FIND_USER_COUNT);}}
@Service@Transactionalpublic class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;public List<User> findAllUser(Pager page) {return userDao.findAllUser(page);}public int findUserCount() {return userDao.findUserCount();}}
@Controller@Scope("prototype")public class UserAction extends ActionSupport {@Autowiredprivate UserService userService;private User user;private List<User> userList;private PageModel pm ;private Pager pager;public Pager getPager() {return pager;}public void setPager(Pager pager) {this.pager = pager;}public PageModel getPm() {return pm;}public void setPm(PageModel pm) {this.pm = pm;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}public List<User> getUserList() {return userList;}public void setUserList(List<User> userList) {this.userList = userList;}public String queryAllUser() {int pagesize=3;int offset=0;HttpServletRequest request = ServletActionContext.getRequest();if(request.getParameter("pager.offset")!=null){offset=Integer.parseInt(request.getParameter("pager.offset"));}Pager page = new Pager();page.setOffset(offset);page.setPagesize(pagesize+offset+1);// userList = userService.findAllUser();userList = userService.findAllUser(page);int count = userService.findUserCount();pm = new PageModel();pm.setDatas(userList);pm.setTotal(count);return "userList";}}
public class Pager implements Serializable {private static final long serialVersionUID = 1L;private int pagesize;private int offset;public int getPagesize() {return pagesize;}public void setPagesize(int pagesize) {this.pagesize = pagesize;}public int getOffset() {return offset;}public void setOffset(int offset) {this.offset = offset;}}
public class PageModel {private int offset = 0;private int pagesize = 10;private int total;private List datas;public int getOffset() {return offset;}public void setOffset(int offset) {this.offset = offset;}public int getPagesize() {return pagesize;}public void setPagesize(int pagesize) {this.pagesize = pagesize;}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;}}
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@ taglib prefix="s" uri="/struts-tags"%><%@ 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><base href="<%=basePath%>"><title>无标题文档</title></head><body><center><h2>用户列表</h2><!--<table width="90%" border="1"><tr><th>用户id</th><th>用户名称</th><th>用户密码</th><th>操作</th></tr><s:iterator value="userList"><tr><td><s:property value="id"/> </td><td><s:property value="username"/> </td><td><s:property value="password"/> </td><td><s:a action="user_updateUI.action"><s:param name="user.id">${id}</s:param>修改</s:a><s:a action="user_delete.action"><s:param name="user.id">${id}</s:param>删除</s:a></td></tr></s:iterator></table>--><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="user"><tr bgcolor="#EFF3F7"><td align="center">${user.id }</td><td align="center">${user.username }</td><td align="center">${user.password}</td><td align="center">修改删除</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="user_queryAllUser.action" items="${pm.total}" export="currentPageNumber=pageNumber" maxPageItems="3"><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></center></body></html>
pg:pager【这个标签用来设置分页的总体参数】重要参数说明:url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数items:总记录数,pager标签正是根据这个值来计算分页参数的maxPageItems:每页显示的行数,默认为10maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10pg:first【第一页的标签】重要参数说明:export变量的意义:pageUrl - 分页链接URL地址(最重要的export参数)pageNumber - 页码firstItem - 首页第一行的索引值lastItem - 首页最后一行的索引值pg:pre【上一页标签】重要参数说明:export变量的意义:pageUrl - 分页链接URL地址(最重要的export参数)pageNumber - 页码firstItem - 前页第一行的索引值lastItem - 前页最后一行的索引值pg:next【下一页标签】重要参数说明:export变量的意义:pageUrl - 分页链接URL地址(最重要的export参数)pageNumber - 页码firstItem - 下页第一行的索引值lastItem - 下页最后一行的索引值pg:last【最后一页的标签】重要参数说明:export变量的意义:pageUrl - 分页链接URL地址(最重要的export参数)pageNumber - 页码firstItem - 尾页第一行的索引值lastItem - 尾页最后一行的索引值pg:pages【这个标签用来循环输出页码信息】重要参数说明:export变量的意义:pageUrl - 分页链接URL地址(最重要的export参数)pageNumber - 页码firstItem - pageNumber这个页码指定的那一页的第一行的索引值lastItem - pageNumber这个页码指定的那一页的最后一行的索引值
pager-taglib插件进行普通分页的更多相关文章
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...
- JSP分页之结合Bootstrap分页插件进行简单分页
结合Bootstrap的分页插件实现分页,其中策略是每次显示5个按钮,然后根据当前页的不同来进行不同的显示: 1. 当前页<3,如果当前页大于5页就显示前五页,不然就显示1~totalPage. ...
- jquery自定义插件来实现分页的效果
本节将介绍如何定义自己的jquery插入,实现分页效果,话不多说,.看看达到的效果: 分页插件 实现的代码例如以下: <!DOCTYPE HTML PUBLIC "-//W3C//DT ...
- SSM 使用 mybatis 分页插件 pagehepler 实现分页
使用分页插件的原因,简化了sql代码的写法,实现较好的物理分页,比写一段完整的分页sql代码,也能减少了误差性. Mybatis分页插件 demo 项目地址:https://gitee.com/fre ...
- PageHelper分页插件及通用分页js
分页概述 1.物理分页 物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果. ...
- SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
前言:本文档使用的是 SpringBoot,如果是 Spring 还需要在 MyBatis 配置 xml 中配置拦截器,并且 PageHelper 是针对 MyBatis 的,MyBatis 的集成不 ...
- 插件PageHelper实现分页查询
一,需求: CommonQuery--PyQueryBean PyQueryBean:鹏飞历史记录查询,以往哪些人对征信进行了查询.CommonQuery:查询条件:根据查询人(umName).被查询 ...
- jquery插件pagination实现分页
1.效果 2.HTML代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=" ...
- mybatis插件机制及分页插件原理
MyBatis 插件原理与自定义插件: MyBatis 通过提供插件机制,让我们可以根据自己的需要去增强MyBatis 的功能.需要注意的是,如果没有完全理解MyBatis 的运行原理和插件的工作方式 ...
随机推荐
- 为什么要在onNewIntent的时候要显示的去调用setIntent
一.原因: 当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIn ...
- Struts2 知识体系
1.struts2是什么 struts2是用于企业级Web开发的框架,基于struts2开发Web应用程序,在开发效率.可扩展性.可维护性上都会大有提升. 2.struts2的优点 struts2框架 ...
- asp中的动态数组
<% Dim array1(),i ReDim array1(3)array1(3)=10response.Write(array1(3)&"<br>") ...
- Hidden Word
Hidden Word time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- “玲珑杯”ACM比赛 Round #1 题解
A:DESCRIPTION Eric has an array of integers a1,a2,...,ana1,a2,...,an. Every time, he can choose a co ...
- PowerDesigner 生成数据库字典(有图有真相,绝对自创非转载)
最近用pd做模型,生成数据字典时在网上找了很多,但是看的都很晕,说的不明白. 经过自己研究终于找到一个简单的方式,当然这只是简单的,大家举一反三去吧.辛苦弄的,求点赞!!! 先看效果图: 现在说一下步 ...
- ViewHolder最简洁的写法
通用viewHolder工具类: public class ViewHolder { // I added a generic return type to reduce the casting no ...
- Discuz登录慢、退出也慢的原因?
Discuz登录慢.退出也慢的原因? 2009-02-21 12:50:11 分类: 转载自:http://www.aiseminar.cn/bbs/thread-201-1-1.html 由于服务 ...
- opencv2 矩阵方式 resize图像缩放代码(转载)
http://blog.sina.com.cn/s/blog_74a459380101r0yx.html opencv2 矩阵方式 resize图像缩放代码(转载) (2014-05-16 09:55 ...
- Android Studio的使用(六)
本篇博文介绍如何更新Android Studio. 1.导航栏的Help下拉框可以找到更新的按钮. 2.接下来点击Update and Restart即可 3.有些人说网连不上,但我的就可以,不行的话 ...