pager-taglib分页标签使用方法

以前写的那个[jsp中实现分页显示数据] 方法不通用,得找个分页标签。关于pager-taglib的使用方法网上虽说一大堆,但是同样费我不少脑细胞去看。有的代码不齐全,有的根本就是错误的,有的写的很潦草,看的我是云里雾里的,经过本人耗费大量的脑细胞奋战N个小时终于搞出了点猫腻。
想明白了,写出来运行成功了,我才发现其实用法很简单,没那些人写的那么麻烦。
首先当然还是要导pager-taglib.jar包了,可以去 [url]http://jsptags.com/tags/navigation/pager/index.jsp[/url]下载,从下载下来的war文件中找到pager-taglib.jar包以及pager-taglib.tld文件。将pager-taglib.tld文件放在WEB-INF目录下,将pager-taglib.jar放在WEB-INF/lib目录下(JBuilder中的导入方法可以参考[Servlet中实现文件上传] )。
新建一个bean文件定义如下两个方法(不一定非要这个样子):
/**    
         * 该方法用于获得数据总数    
         * @return int    
         */    
public int getArticlesCount() {    
                String sql = "SELECT COUNT(*) FROM blog_Article";    
                dbc = new DataSource();    
                stmt = dbc.getPreparedStatement(sql);    
                rs = dbc.getResultSet(stmt);    
                 int count = 0;    
                 try {    
                         if(rs.next()){    
                            count = rs.getInt(1);    
                        }    
                } catch (SQLException ex) {    
                        ex.printStackTrace();    
                } finally {    
                        dbc.closeConnection();    
                }    
                 return count;    
        }    
            
         /**    
         * 该方法用于数据分页    
         * @param begin int    
         * @param end int    
         * @return ArrayList    
         */    
public ArrayList getArticlesAll( int begin, int end) {    
                String sql = "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";    
                ArrayList list = new ArrayList();    
                dbc = new DataSource();    
                stmt = dbc.getPreparedStatement(sql);    
                rs = dbc.getResultSet(stmt);    
                 try {    
                         while (rs.next()) {    
                                ArticleBean article = new ArticleBean();    
                                article.setId(rs.getInt(1));    
                                 //赋值操作...    
                                article.setTag(rs.getString(10));    
                                article.setIsTop(rs.getByte(11));    
                                list.add(article);    
                        }    
                } catch (SQLException ex) {    
                        ex.printStackTrace();    
                } finally {    
                        dbc.closeConnection();    
                }    
                 return list;    
        }


接下来新建一个JSP页面(需要JSTL):
<%@ page contentType= "text/html; charset=GBK" import= "java.util.*,com.nkblog.bean.ArticleBean,com.nkblog.dbc.*" %>    
<%@ taglib uri= "http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<%@ taglib uri="WEB-INF/pager-taglib.tld" prefix="pg" %>    
<%    
request.setCharacterEncoding("GBK");    
String offset = request.getParameter("pager.offset");//pager.offset为此分页标签内置变量用于传递页数    
                int page = 0;    
                if(offset == null){    
                //若offset为null则是第一次访问,所以显示第一页    
                        page= 1;    
                }else{    
                //反之,则按照传递来的页数来分    
                        page = Integer.parseInt(offset)+1;    
                }    
//获取数据总数                    
int dataTotal = ArticleManager.getArticlesCount();    
//查询分页数据,10为每页要显示的数据量,可自定义    
ArrayList articles = ArticleManager.getArticlesAll(page,10);    
%>    
<%    
for(int i=0;i<articles.size();i++)    
{    
//输出取出的10条数据...    
}    
%>    
<pg:pager scope="request" maxIndexPages="5" index="center" maxPageItems="10" url="index.jsp" items="<%=dataTotal%>" %>" export="currentPageNumber=pageNumber">    
                <pg:first><a href="${pageUrl}">首页</a></pg:first>    
                <pg:prev><a href="${pageUrl}">前页</a></pg:prev>    
    <pg:page>    
    </pg:page>    
                <pg:pages>    
                        <c:choose>    
                        <c:when test="${pageNumber eq currentPageNumber }">    
                        <font color="red">${pageNumber }</font>    
                        </c:when>    
                        <c:otherwise>    
                        <a href="${pageUrl }">${pageNumber}</a>    
                        </c:otherwise>    
                        </c:choose>    
     </pg:pages>    
                <pg:next><a href="${pageUrl}">下页</a></pg:next>    
                <pg:last><a href="${pageUrl}">尾页</a></pg:last>    
</pg:pager>

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


 

你可能感兴趣的:(jsp,数据,分页,标签,J2EE)