pg:pager标签

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

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

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

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

items:总记录数
maxPageItems:
每页显示的行数,默认为10
maxIndexPages:
最大输出的页码数
export
:这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有pageOffsetpageNumber(参见文档),即页码偏移量及页码。通过这两个变量名,可以在JspJava里面从Request里获得。 Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage的变量,这个变量将被保存到Request中,在JspJava中可以得到。scope:有Reuqestpage可选。

     2.<pg:param>

  用来设置将要加入到URL的参数。使用Name属性指定即可,用于参数传递。

  3.<pg:index>

  这个标签说明分页条显示的内容,在这里你可以设置各种风格的分页显示方式。

  4.<pg:first>

可以导出的值: pageUrl -分页链接URL地址   pageNumber -页码  firstItem -首页第一行的索引值   lastItem -首页最后一行的索引值

  第一页标签

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - 首页第一行的索引值
  • lastItem - 首页最后一行的索引值

  5.<pg:pre>

  上一页标签

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - 前页第一行的索引值
  • lastItem - 前页最后一行的索引值

  6.<pg:pages>

  这个标签用来循环输出页码信息

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - pageNumber这个页码指定的那一页的第一行的索引值
  • lastItem - pageNumber这个页码指定的那一页的最后一行的索引值

  7.<pg:next>

  下一页标签

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - 下页第一行的索引值
  • lastItem - 下页最后一行的索引值

  8.<pg:last>

  最后一页标签

  • pageUrl - 分页链接URL地址
  • pageNumber - 页码
  • firstItem - 尾页第一行的索引值
  • lastItem - 尾页最后一行的索引值

下面是一个示例:

[html] view plaincopyprint?

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.         <a href="<%=pageUrl %>">首页[<%=pageNumber %>]</a><!-- pageNumber导出当前页的值 -->  

14.     </pg:first>  

15.     <pg:prev>  

16.         <a href="<%=pageUrl %>">上一页</a>     

17.     </pg:prev>  

18.     <pg:pages>  

19.     <%if(number==pageNumber){ %>  

20.         [<%=pageNumber %>]  

21.     <%} else { %>  

22.         <a href="<%=pageUrl %>">[<%=pageNumber %>]</a> <!-- pageUrl pageNumber导出值 -->  

23.     <%} %>  

24.     </pg:pages>  

25.     <pg:next>  

26.         <a href="<%=pageUrl %>">下一页</a>  

27.     </pg:next>  

28.     <pg:last>  

29.         <a href="<%=pageUrl%>">尾页</a>  

30.     </pg:last>  

31.</pg:pager>  

32.</body>  

33.</html>  

运行结果:


链接地址:http://localhost:8080/msg/testPager.jsp?pager.offset=50

pager-taglib传值乱码:

首先确定不是因为平时url乱码所致(手动设置接收的参数Stringstr = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8")可解决)

pager-taglib使用的是jdk默认的编码,所以传中文时会出现乱码,要重新修改编译源代码可以解决:
建立普通的javaproject命名为pager-taglib,将源码解压后的两个文件拷贝到src下,注意将taglib.tld拷到META-INF下,修改在com\jsptags\navigation\pager下面的PagerTagaddParam(Stringname, String value)中,它原本是采用的URLEncoding.encode(value)方式来对传递的参数进行编码的,修改成为URLEncoding.encode(value, "UTF-8"),打成jar包即可用

下面是一个实际应用的例子:

Pager.java

[java] view plaincopyprint?

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.       

11. }  

DAO层:

[java] view plaincopyprint?

1. public Pager<User> list(String condition) {  

2.          int pageOffset = SystemContext.getPageOffset();  

3.          int pageSize = SystemContext.getPageSize();  

4.          Connection con = null;  

5.          PreparedStatement ps = null;  

6.          ResultSet rs = null;  

7.          Pager<User> pages = new Pager<User>();  

8.          List<User> users = new ArrayList<User>();  

9.          User u = null;  

10.         try {  

11.             con = DBUtil.getConnection();  

12.             String sql = "select * from t_user";  

13.             String sqlCount = "select count(*) from t_user";  

14.             if(condition!=null||!"".equals(condition)) {  

15.                 sql+=" where username like '%"+condition+"%' or nickname like '%"+condition+"%'";  

16.                 sqlCount+=" where username like '%"+condition+"%' or nickname like '%"+condition+"%'";  

17.             }  

18.             sql+=" limit ?,?";  

19.             ps = con.prepareStatement(sql);  

20.             ps.setInt(1, pageOffset);  

21.             ps.setInt(2, pageSize);  

22.               

23.             rs = ps.executeQuery();  

24.             while(rs.next()) {  

25.                 u = new User();  

26.                 u.setId(rs.getInt("id"));  

27.                 u.setNickname(rs.getString("nickname"));  

28.                 u.setUsername(rs.getString("username"));  

29.             }  

30.             ps = con.prepareStatement(sqlCount);  

31.             rs = ps.executeQuery();  

32.             int totalRecord = 0;  

33.             while(rs.next()) {  

34.                 totalRecord = rs.getInt(1);  

35.             }  

36.             int totalPage = (totalRecord-1)/pageSize+1;  

37.             pages.setPageOffset(pageOffset);  

38.             pages.setPageSize(pageSize);  

39.             pages.setTotalPage(totalPage);  

40.             pages.setTotalRecord(totalRecord);  

41.         } catch (SQLException e) {  

42.             e.printStackTrace();  

43.         } finally {  

44.             DBUtil.close(rs);  

45.             DBUtil.close(ps);  

46.             DBUtil.close(con);  

47.         }  

48.         pages.setDatas(users);  

49.         return pages;  

50.     }  


分页部分pager.jsp

[html] view plaincopyprint?

1. <%@ page language="java" contentType="text/html; charset=UTF-8"  

2.      pageEncoding="UTF-8"%>  

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

4. <%  

5.      int items = Integer.parseInt(request.getParameter("items"));  

6.      String params = request.getParameter("params"); //con  

7.      String v="";  

8.      if(params==null) params="";  

9.      if(request.getParameter(params)!=null)  

10.         v=new String(request.getParameter(params).getBytes("ISO-8859-1"),"utf-8") ;  

11. %>  

12.<pg:pager maxPageItems="15" items="<%=items%>" export="curPage=pageNumber">  

13.   

14.     <pg:param name="<%=params %>" value="<%=v %>"/>  

15.   

16.<pg:last>  

17. 共<%=items %>记录,共<%=pageNumber %>页,  

18.</pg:last>  

19. 当前第<%=curPage %>页  

20.<pg:first>  

21.     <a href="<%=pageUrl%>">首页</a>  

22.</pg:first>  

23.<pg:prev>  

24.     <a href="<%=pageUrl%>">上一页</a>  

25.</pg:prev>  

26.<pg:pages>  

27.<%  

28.     if(curPage==pageNumber) {  

29. %>  

30.     [<%=pageNumber%>]  

31.<%         

32.     } else {  

33. %>  

34.     <a href="<%=pageUrl %>"><%=pageNumber %></a>          

35.<%         

36.     }  

37. %>  

38.</pg:pages>  

39.<pg:next>  

40.     <a href="<%=pageUrl %>">下一页</a>  

41.</pg:next>  

42.<pg:last>  

43.     <a href="<%=pageUrl%>">尾页</a>  

44.</pg:last>  

45.</pg:pager>  

在显示数据部分只要调用pager.jsp.传值即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值