现在的位置: 首页 > 综合 > 正文

pager-taglib分页标签使用方法

2013年11月04日 ⁄ 综合 ⁄ 共 6431字 ⁄ 字号 评论关闭
以前写的那个[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文件定义如下两个方法(不一定非要这个样子):
 
/**
     * 该方法用于获得数据总数
     * @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;
    }
/**     * 该方法用于获得数据总数     * @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>
<%@ 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数据集合,它就完全自动的跟也并显示数据了,汗~~也不知道我这么写会有几个看得懂的,估计懂的人有,但是能看明白我写的就少了...我发现原来代码写起来简单,但是要给别人将明白了真的好难啊。
本文来源于:尼克技术博客 http://www.ineeke.cn/ , 原文地址:http://www.ineeke.cn/archives/PagerTagLibFenYeBiaoQianShiYongFangFa/
 
 

抱歉!评论已关闭.