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 循环输出页码
下面是一个示例:
- <%@ page language="java" pageEncoding="UTF-8"%>
- <%@taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>title</title>
- </head>
- <body>
- <!-- 每个标签可以导出的值参见文档 ,没有的可以用export导出 ,但用export的值也有规定-->
- <pg:pager items="1000" maxPageItems="10" maxIndexPages="7" export="number"><!-- export可以使用表达式: curpage=number,这样 curpage就相当于number -->
- <%=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>
- </body>
- </html>
- 下面是一个实际应用的例子:
-
Pager.java
- public class Pager<E> {
- private int pageSize;//每页显示多少条
- private int pageOffset;//分页的开始值
- private int totalRecord;//总共多少条记录
- private int totalPage;//总共多少页
- private List<E> datas;//放置具体数据的列表
- //省略getter setter
- }
DAO层:
@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 :
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 :
<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>