分页标签:pager-taglib的使用

pager-taglib是一个用jsp标签库实现分页的工具,在它的demo中有实现好的各种常见分页方式,使用时只需pager- taglib.jar包即可,Pager会在给出的URL后面加上"?page.offset="来标识当前偏移量,使用时在jsp页面将pager- taglib的标签库引入:   

<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>

 

标签介绍
<pg:pager>:一切子标签都在它里面工作

<pg:pager  items="int" maxItems="int" maxPageItems="int" maxIndexPages="int"  export="expression" scope="page|request" 省略>

items:总记录数
maxPageItems:每页显示的行数,默认为10
maxIndexPages:最大输出的页码数
export:这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有pageOffset及 pageNumber(参见文档),即页码偏移量及页码。通过这两个变量名,可以在Jsp或Java里面从Request里获得。 Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫 CurrentPage的变量,这个变量将被保存到Request中,在Jsp或Java中可以得到。scope:有Reuqest、page可选。
<pg:param>设置加入到URL的参数如  <pg:param name=" pagesize " value="5" /> 

pg:first 首页标签
可以导出的值: pageUrl - 分页链接URL地址    pageNumber - 页码   firstItem - 首页第一行的索引值   lastItem - 首页最后一行的索引值 
pg:pre上一页 
pg:next下一页
pg:last 尾页
pg:pages 循环输出页码

下面是一个示例:

    1. <%@ page language="java" pageEncoding="UTF-8"%>  
    2. <%@taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager"%>  
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    4. <html>  
    5. <head>  
    6. <title>title</title>  
    7. </head>  
    8. <body>  
    9. <!-- 每个标签可以导出的值参见文档 ,没有的可以用export导出 ,但用export的值也有规定-->   
    10. <pg:pager items="1000" maxPageItems="10" maxIndexPages="7" export="number"><!-- export可以使用表达式: curpage=number,这样 curpage就相当于number -->  
    11. <%=number %>  
    12.     <pg:first>  
    13.         <href="<%=pageUrl %>">首页[<%=pageNumber %>]</a><!-- pageNumber导出当前页的值 -->  
    14.     </pg:first>  
    15.     <pg:prev>  
    16.         <href="<%=pageUrl %>">上一页</a>     
    17.     </pg:prev>  
    18.     <pg:pages>  
    19.     <%if(number==pageNumber){ %>  
    20.         [<%=pageNumber %>]  
    21.     <%} else { %>  
    22.         <href="<%=pageUrl %>">[<%=pageNumber %>]</a<!-- pageUrl pageNumber导出值 -->  
    23.     <%} %>  
    24.     </pg:pages>  
    25.     <pg:next>  
    26.         <href="<%=pageUrl %>">下一页</a>  
    27.     </pg:next>  
    28.     <pg:last>  
    29.         <href="<%=pageUrl%>">尾页</a>  
    30.     </pg:last>  
    31. </pg:pager>  
    32. </body>  
    33. </html
  1. 下面是一个实际应用的例子:
  2. Pager.java

    1. public class Pager<E> {  
    2.       
    3.     private int pageSize;//每页显示多少条  
    4.     private int pageOffset;//分页的开始值  
    5.     private int totalRecord;//总共多少条记录  
    6.     private int totalPage;//总共多少页  
    7.     private List<E> datas;//放置具体数据的列表  
    8.       
    9.     //省略getter setter  
    10.       

     

    DAO层:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    @Override
      public PagerBean<Book> findbyPager(int offerst) {
     
          PagerBean<Book>  pb = new PagerBean<Book>();
          int sumRow=this.getSumRow();
          pb.setTotalRecord(sumRow);
          String sql ="select top "+10+" * from book where bookId not in" +
                  "  (select   top "+offerst+" bookId  from book)";
          List<Book> lst = new ArrayList<Book>();
          rs = query(sql, null);
          try {
              while(rs.next()){
                  Book book = new Book(rs.getInt("bookid"), rs.getString("bookName"), rs.getInt("booktypeId"), rs.getString("author"), rs.getString("pbName"), rs.getString("context"), rs.getString("smallimg"), rs.getString("bigImg"), rs.getDouble("price"), rs.getDate("pbdate"), rs.getDouble("hyprice"), rs.getInt("bookStates"), rs.getDate("sjdate"), rs.getInt("num"), rs.getInt("saleCount"));
                  lst.add(book);
              }
          } catch (SQLException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }finally{
              closeAll();
          }
          pb.setDatas(lst);
          return pb;
       
           
      }

     servlet :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;chartset=utf-8");
            String pageOffset =request.getParameter("pager.offset") ;
            int ps=0;
            try {
                ps=Integer.parseInt(pageOffset);
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                ps=0;
            }
            IBookDao bookDao = new BookDao();
             PagerBean<Book> pagerData =bookDao.findbyPager(ps);
             request.setAttribute("pagerData", pagerData);
             request.getRequestDispatcher("front/collect.jsp").forward(request, response);

     jsp :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        <pg:pager items="${ pagerData.totalRecord}" url="${pageContext.request.contextPath}/BookListServletByPageTag" maxPageItems="10" maxIndexPages="7" export="number"><!-- export可以使用表达式: curpage=number,这样 curpage就相当于number --> 
        <pg:first> 
            <a href="<%=pageUrl %>">首页[<%=pageNumber %>]</a><!-- pageNumber导出当前页的值 --> 
        </pg:first> 
        <pg:prev> 
            <a href="<%=pageUrl %>">上一页</a>    
        </pg:prev> 
        <pg:pages> 
        <%if(number==pageNumber){ %> 
            [<%=pageNumber %>] 
        <%} else { %> 
            <a href="<%=pageUrl %>">[<%=pageNumber %>]</a> <!-- pageUrl pageNumber导出值 --> 
        <%} %> 
        </pg:pages> 
        <pg:next> 
            <a href="<%=pageUrl %>">下一页</a> 
        </pg:next> 
        <pg:last> 
            <a href="<%=pageUrl%>">尾页</a> 
        </pg:last> 
    </pg:pager> 

     

     

     

     
posted @   赤子之心_timefast  阅读(594)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版
点击右上角即可分享
微信分享提示