• pager-taglib插件进行普通分页


        基于Spring+ibatis+Struts+pager-taglib分页技术
        pager-taglib是一款支持多种风格的分页显示。
        先简单介绍一下Pager-taglib。实际上,她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成 多种不一样的分页页面,风格各异,她自带的DEMO就有七种左右的分页风格,包括Google的分页风格。而需要订制自已的风格的分页页面也非常简单。
          接触的当天、匆匆看了下Demo和文档,发现这个很早(2002年最新版一直到现在)就已经有的东西,似 乎比较擅长显示端分页。如,把所有的数据传到页面,通过参数设定页面大小等,可能得到很完美的分页效果。
        这里的分页是通过数据库来实现的,形如
    1. select * from user limit 0, 10
    下面这个简单的例子介绍他的使用。
    首先是ibatis中的mapper文件
    1. <?xml version="1.0" encoding="utf-8" ?>
    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mapper namespace="com.csr.web.domain.User">
    5. <resultMap type="com.csr.web.domain.User" id="userResult">
    6. <result property="id" column="id" jdbcType="INTEGER" javaType="java.lang.Integer" />
    7. <result property="username" column="username" />
    8. <result property="password" column="password" />
    9. <result property="email" column="email" />
    10. </resultMap>
    11. <select id="findUserPage" resultMap="userResult">
    12. select * from user limit #{_parameter.offset,jdbcType=INTEGER},#{_parameter.pagesize,jdbcType=INTEGER}
    13. </select>
    14. <select id="findUserCount" resultType="int">
    15. select count(*) from user
    16. </select>
    17. </mapper>
    我的userdaoImpl实现部分
    1. @Repository
    2. public class UserDaoImpl implements UserDao {

    3. private final String FIND_USER_COUNT = "findUserCount";
    4. private final String FIND_USER_PAGE = "findUserPage";
    5. @Autowired
    6. private SqlSessionTemplate sqlSessionTemplate;

    7. public List<User> findAllUser(Pager page) {
    8. return sqlSessionTemplate.selectList(FIND_USER_PAGE, page);
    9. }
    10. public int findUserCount() {
    11. return sqlSessionTemplate.selectOne(FIND_USER_COUNT);
    12. }
    13. }
    userserviceImp实现部分
    1. @Service
    2. @Transactional
    3. public class UserServiceImpl implements UserService {
    4. @Autowired
    5. private UserDao userDao;
    6. public List<User> findAllUser(Pager page) {
    7. return userDao.findAllUser(page);
    8. }
    9. public int findUserCount() {
    10. return userDao.findUserCount();
    11. }
    12. }
    userAction部分
    1. @Controller
    2. @Scope("prototype")
    3. public class UserAction extends ActionSupport {
    4. @Autowired
    5. private UserService userService;
    6. private User user;
    7. private List<User> userList;
    8. private PageModel pm ;
    9. private Pager pager;
    10. public Pager getPager() {
    11. return pager;
    12. }
    13. public void setPager(Pager pager) {
    14. this.pager = pager;
    15. }
    16. public PageModel getPm() {
    17. return pm;
    18. }
    19. public void setPm(PageModel pm) {
    20. this.pm = pm;
    21. }
    22. public User getUser() {
    23. return user;
    24. }
    25. public void setUser(User user) {
    26. this.user = user;
    27. }
    28. public List<User> getUserList() {
    29. return userList;
    30. }
    31. public void setUserList(List<User> userList) {
    32. this.userList = userList;
    33. }

    34. public String queryAllUser() {
    35. int pagesize=3;
    36. int offset=0;
    37. HttpServletRequest request = ServletActionContext.getRequest();
    38. if(request.getParameter("pager.offset")!=null){
    39. offset=Integer.parseInt(request.getParameter("pager.offset"));
    40. }
    41. Pager page = new Pager();
    42. page.setOffset(offset);
    43. page.setPagesize(pagesize+offset+1);
    44. // userList = userService.findAllUser();
    45. userList = userService.findAllUser(page);
    46. int count = userService.findUserCount();
    47. pm = new PageModel();
    48. pm.setDatas(userList);
    49. pm.setTotal(count);
    50. return "userList";
    51. }
    52. }
    paper分页工具类
    1. public class Pager implements Serializable {
    2. private static final long serialVersionUID = 1L;
    3. private int pagesize;
    4. private int offset;
    5. public int getPagesize() {
    6. return pagesize;
    7. }
    8. public void setPagesize(int pagesize) {
    9. this.pagesize = pagesize;
    10. }
    11. public int getOffset() {
    12. return offset;
    13. }
    14. public void setOffset(int offset) {
    15. this.offset = offset;
    16. }
    17. }
    pageModel工具类
    1. public class PageModel {
    2. private int offset = 0;
    3. private int pagesize = 10;
    4. private int total;
    5. private List datas;
    6. public int getOffset() {
    7. return offset;
    8. }
    9. public void setOffset(int offset) {
    10. this.offset = offset;
    11. }
    12. public int getPagesize() {
    13. return pagesize;
    14. }
    15. public void setPagesize(int pagesize) {
    16. this.pagesize = pagesize;
    17. }
    18. public int getTotal() {
    19. return total;
    20. }
    21. public void setTotal(int total) {
    22. this.total = total;
    23. }
    24. public List getDatas() {
    25. return datas;
    26. }
    27. public void setDatas(List datas) {
    28. this.datas = datas;
    29. }
    30. }
    页面jsp文件
    1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    2. <%
    3. String path = request.getContextPath();
    4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    5. %>
    6. <%@ taglib prefix="s" uri="/struts-tags"%>
    7. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    8. <%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
    9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    10. <html>
    11. <head>
    12. <base href="<%=basePath%>">
    13. <title>无标题文档</title>
    14. </head>
    15. <body>
    16. <center>
    17. <h2>用户列表</h2>
    18. <!--
    19. <table width="90%" border="1">
    20. <tr>
    21. <th>用户id</th>
    22. <th>用户名称</th>
    23. <th>用户密码</th>
    24. <th>操作</th>
    25. </tr>
    26. <s:iterator value="userList">
    27. <tr>
    28. <td><s:property value="id"/> </td>
    29. <td><s:property value="username"/> </td>
    30. <td><s:property value="password"/> </td>
    31. <td><s:a action="user_updateUI.action"><s:param name="user.id">${id}</s:param>修改</s:a>
    32. <s:a action="user_delete.action"><s:param name="user.id">${id}</s:param>删除</s:a></td>
    33. </tr>
    34. </s:iterator>
    35. </table>
    36. -->
    37. <table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">
    38. <tr bgcolor="#EFF3F7">
    39. <TD align="center">ID</TD>
    40. <TD align="center">内容</TD>
    41. <TD align="center">时间</TD>
    42. <TD align="center">相关操作</TD>
    43. </tr>
    44. <c:if test="${!empty pm.datas}">
    45. <c:forEach items="${pm.datas}" var="user">
    46. <tr bgcolor="#EFF3F7">
    47. <td align="center">${user.id }</td>
    48. <td align="center">${user.username }</td>
    49. <td align="center">${user.password}</td>
    50. <td align="center">
    51. 修改
    52. 删除</td>
    53. </tr>
    54. </c:forEach>
    55. </c:if>
    56. <c:if test="${empty pm.datas}">
    57. <tr>
    58. <td colspan="5" align="center" bgcolor="#EFF3F7">
    59. 没有找到相应的记录
    60. </td>
    61. </tr>
    62. </c:if>
    63. </table>
    64. <pg:pager url="user_queryAllUser.action" items="${pm.total}" export="currentPageNumber=pageNumber" maxPageItems="3">
    65. <pg:first>
    66. <a href="${pageUrl}">首页</a>
    67. </pg:first>
    68. <pg:prev>
    69. <a href="${pageUrl }">上一页</a>
    70. </pg:prev>
    71. <pg:pages>
    72. <c:choose>
    73. <c:when test="${currentPageNumber eq pageNumber}">
    74. <font color="red">${pageNumber }</font>
    75. </c:when>
    76. <c:otherwise>
    77. <a href="${pageUrl }">${pageNumber }</a>
    78. </c:otherwise>
    79. </c:choose>
    80. </pg:pages>
    81. <pg:next>
    82. <a href="${pageUrl }">下一页</a>
    83. </pg:next>
    84. <pg:last>
    85. <a href="${pageUrl }">尾页</a>
    86. </pg:last>
    87. </pg:pager>
    88. </center>
    89. </body>
    90. </html>
    页面效果
     
    下面介绍pager-taglib的一般使用说明:
    1. pg:pager【这个标签用来设置分页的总体参数】重要参数说明:
    2. url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数
    3. items:总记录数,pager标签正是根据这个值来计算分页参数的
    4. maxPageItems:每页显示的行数,默认为10
    5. maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10
    6. pg:first【第一页的标签】重要参数说明:
    7. export变量的意义:
    8. pageUrl - 分页链接URL地址(最重要的export参数)
    9. pageNumber - 页码
    10. firstItem - 首页第一行的索引值
    11. lastItem - 首页最后一行的索引值
    12. pg:pre【上一页标签】重要参数说明:
    13. export变量的意义:
    14. pageUrl - 分页链接URL地址(最重要的export参数)
    15. pageNumber - 页码
    16. firstItem - 前页第一行的索引值
    17. lastItem - 前页最后一行的索引值
    18. pg:next【下一页标签】重要参数说明:
    19. export变量的意义:
    20. pageUrl - 分页链接URL地址(最重要的export参数)
    21. pageNumber - 页码
    22. firstItem - 下页第一行的索引值
    23. lastItem - 下页最后一行的索引值
    24. pg:last【最后一页的标签】重要参数说明:
    25. export变量的意义:
    26. pageUrl - 分页链接URL地址(最重要的export参数)
    27. pageNumber - 页码
    28. firstItem - 尾页第一行的索引值
    29. lastItem - 尾页最后一行的索引值
    30. pg:pages【这个标签用来循环输出页码信息】重要参数说明:
    31. export变量的意义:
    32. pageUrl - 分页链接URL地址(最重要的export参数)
    33. pageNumber - 页码
    34. firstItem - pageNumber这个页码指定的那一页的第一行的索引值
    35. lastItem - pageNumber这个页码指定的那一页的最后一行的索引值

     








  • 相关阅读:
    小学教师资格考试——综合素质——材料分析
    小学教师资格考试——综合素质——教师基本能力
    牛客网暑假训练第一场——J Different Integers(莫队算法 & 树状数组)
    牛客网暑假训练第二场——A run(递推&前缀和)
    CSU
    ZOJ
    CSU
    CSU
    HDU
    Hrbust-2090 背包(最小不可构造数)
  • 原文地址:https://www.cnblogs.com/wang3680/p/3b5b598a09ef2ec4315da829c87c7976.html
Copyright © 2020-2023  润新知