pager-taglib分页标签使用方法
  P36VkPVLDAdw 2023年11月02日 64 0


以前写的那个[​​jsp中实现分页显示数据​​​] 方法不通用,得找个分页标签。关于pager-taglib的使用方法网上虽说一大堆,但是同样费我不少脑细胞去看。有的代码不齐全,有的根本就是错误的,有的写的很潦草,看的我是云里雾里的,经过本人耗费大量的脑细胞奋战N个小时终于搞出了点猫腻。
想明白了,写出来运行成功了,我才发现其实用法很简单,没那些人写的那么麻烦。
首先当然还是要导pager-taglib.jar包了,可以去​​​http://jsptags.com/tags/navigation/pager/index.jsp​​​下载,从下载下来的war文件中找到pager-taglib.jar包以及pager-taglib.tld文件。将pager-taglib.tld文件放在WEB-INF目录下,将pager-taglib.jar放在WEB-INF/lib目录下(JBuilder中的导入方法可以参考[​​Servlet中实现文件上传​​​] )。
新建一个bean文件定义如下两个方法(不一定非要这个样子):

 

1. /** 
2. * 该方法用于获得数据总数
3. * @return int
4. */
5. public int
6. "SELECT COUNT(*) FROM blog_Article";
7. new
8. stmt = dbc.getPreparedStatement(sql);
9. rs = dbc.getResultSet(stmt);
10. int count = 0;
11. try
12. if(rs.next()){
13. 1);
14. }
15. catch
16. ex.printStackTrace();
17. finally
18. dbc.closeConnection();
19. }
20. return
21. }
22.
23. /**
24. * 该方法用于数据分页
25. * @param begin int
26. * @param end int
27. * @return ArrayList
28. */
29. public ArrayList getArticlesAll(int begin,int
30. "select top "+end+" * from blog_Article where (log_ID <= (select min(log_ID) from (select top "+begin+" log_ID from blog_Article order by log_PostTime desc) as t)) order by log_PostTime desc";
31. new
32. new
33. stmt = dbc.getPreparedStatement(sql);
34. rs = dbc.getResultSet(stmt);
35. try
36. while
37. new
38. 1));
39. //赋值操作…
40. 10));
41. 11));
42. list.add(article);
43. }
44. catch
45. ex.printStackTrace();
46. finally
47. dbc.closeCon
nection(); 48. }
49. return
50. }

 

接下来新建一个JSP页面(需要JSTL):

1. <%@ page contentType="text/html; charset=GBK" import="java.util.*,com.nkblog.bean.ArticleBean,com.nkblog.dbc.*"
2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"
3. <%@ taglib uri="WEB-INF/pager-taglib.tld" prefix="pg"
4. <%
5. request.setCharacterEncoding("GBK");
6. String offset = request.getParameter("pager.offset");//pager.offset为此分页标签内置变量用于传递页数
7. int page = 0;
8. if(offset == null){
9. //若offset为null则是第一次访问,所以显示第一页
10. 1;
11. else{
12. //反之,则按照传递来的页数来分
13. 1;
14. }
15. //获取数据总数
16. int
17. //查询分页数据,10为每页要显示的数据量,可自定义
18. ArrayList articles = ArticleManager.getArticlesAll(page,10);
19. %>
20. <%
21. for(int i=0;i<articles.size();i++)
22. {
23. //输出取出的10条数据…
24. }
25. %>
26. <pg:pager scope="request" maxIndexPages="5" index="center" maxPageItems="10" url="index.jsp" items="<%=dataTotal%>" %>" export="currentPageNumber=pageNumber">
27. "${pageUrl}">首页</a></pg:first>
28. "${pageUrl}">前页</a></pg:prev>
29. <pg:page>
30. </pg:page>
31. <pg:pages>
32. <c:choose>
33. "${pageNumber eq currentPageNumber }">
34. "red">${pageNumber }</font>
35. </c:when>
36. <c:otherwise>
37. "${pageUrl }">${pageNumber}</a>
38. </c:
otherwise> 39. </c:choose>
40. </pg:pages>
41. "${pageUrl}">下页</a></pg:next>
42. "${pageUrl}">尾页</a></pg:last>
43. </pg:pager>

接下来具体说明上面的分页标签<pg:pager>
maxIndexPages为分页条个数,形如:< << 1 2 3 4 5 >> >
maxPageItems为每页要显示的数据量
url为处理分页请求的文件,可以是JSP或Servlet。当程序运行起来后,会以index.jsp?pager.offset=5的形式传递页数。
items为数据总数,pager-taglib会自动根据以上参数进行分页。
需要进行修改的也就上面这几个参数,起初看别人写的方法,我以为只要导入这个标签然后给定一个List数据集合,它就完全自动的跟也并显示数据了,汗~~也不知道我这么写会有几个看得懂的,估计懂的人有,但是能看明白我写的就少了…我发现原来代码写起来简单,但是要给别人将明白了真的好难啊。

 

-------------------------------

1、<pg:pager>,在这个标签库里就充当着一个领袖的作用,一切子标签都在它里面工作。就以上出现的参数进行解释一下:
items:数据的纪录数
index:说起来比较麻烦,反正是一次大跳跃之后,当前页面在各个页数的什么位置,默认为Center,不动也罢了。
maxPageItems:显示最多的纪录数/页
maxIndexPages:显示最多的分页数/次,如设为5的话,则会出现这样的情况 1 2 3 4 5 .或 3 4 5 6 7 这样的形式,其实她自带的DEMO都喜欢把页数展现出来排成一排。
isOffset:与pg:item配套使用,页pg:item基本上被我淘汰出局。
export:这个属性比较重要,文档也对此作好相对长篇幅的说明。这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有pageOffset及pageNumber,即页码偏移量及页码。通过这两个变量名,可以在Jsp或Java里面从Request里获得。Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫CurrentPage的变量,这个变量将被保存到Request中,在Jsp或Java中可以得到。
scope:咳。还需要讲么?

2、<pg:param>这个标签很有用,用来设置将要加入到URL的变量。使用Name属性指定即可。

3、<pg:index>这个标签说明分页显示开始了。跳进我们Include的页面。再看看详细的情况。

----------------------------------------

参考资料:
​​​http://jsptags.com/tags/navigation/pager/index.jsp​​​ Pager-taglibs官网


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  mO6vR5BmZcTL   2023年11月02日   50   0   0 phpmysqlSQLzabbix
P36VkPVLDAdw
最新推荐 更多