分页源码

1.将PageResultSet.java文件编译成class文件,并放入你的Web
应用程序的WEB-INF/classes/com/youngor/util目录下,可以对包名做相应修改。

2.在你的Action类中:
先从业务处理逻辑类中取出数据(ArrayList或Vector格式)
UserBO userBO=new UserBO();
Collection data=userBO.findUsers();//示例方法
再得到当前页curPage和每页记录数pageSize
int curPage = Integer.parseInt(request.getParameter(“cur_page“));
int pageSize=15;
然后生成PageResultSet对象
PageResultSet dataList = new PageResultSet(data, curPage, pageSize);
request.setAttribute("usersList", usersList);

3.在你的JSP页面中:
   <%
          PageResultSet pageResultSet=(PageResultSet)request.getAttribute("usersList");
   ArrayList usersList=(ArrayList)pageResultSet.getData();
   for(int i=0;i<usersList.size();i++)
   {
            UserEOuserEO=(UserEO)usersList.get(i);%>
      <tr>
        <td><a href="view_user.do?id=<%=userEO.getId()%>"><%=userEO.getUsername()%></a></td>
       <td><%=userEO.getName()%></td>
       <td><%=userEO.getPhoneNumber()%></td>
       <td><%=userEO.getEmailBox()%></td>
       <td><%=userEO.getAddress()%></td>
        <td><%=userEO.getPostcode()%></td>
        </tr>
    <%}%>
    </table></td>
  </tr>
</table>

<!-- 显示分页工具栏 -->

<%=pageResultSet.getToolBar("list_users.do")%>


注意:
1、如果你觉得分页工具栏不能满足你的要求,可以用PageResultSet类中的公共方法
first()、previous()、next()、last()定制自己的工具栏,并且,你还可以在PageResultSet中定义多个样式的工具栏;
2、getToolBar(String url)方法接受带查询字符串的参数,比如“list_users.do?class_id=1“。



//PageResultSet.java
package com.youngor.util;

import java.util.*;

public class PageResultSet {
    /**
     * 分页数据
     */
    private Collection data = null;
    /**
     * 当前页
     */
    private int curPage;
    /**
     * 每页显示的记录数
     */
    private int pageSize;
    /**
     * 记录行数
     */
    private int rowsCount;
    /**
     * 页数
     */
    private int pageCount;

    public PageResultSet(Collection data) {
        this.data = data;
        this.curPage = 1;
        this.pageSize = 10;
        this.rowsCount = data.size();
        this.pageCount = (int)Math.ceil((double) rowsCount / pageSize);
    }

    public PageResultSet(Collection data, intcurPage) {
        this.data = data;
        this.curPage = curPage;
        this.pageSize = 10;
        this.rowsCount = data.size();
        this.pageCount = (int)Math.ceil((double) rowsCount / pageSize);
    }

    public PageResultSet(Collection data, intcurPage, int pageSize) {
        this.data = data;
        this.curPage = curPage;
        this.pageSize = pageSize;
        this.rowsCount = data.size();
        this.pageCount = (int)Math.ceil((double) rowsCount / pageSize);
    }

    /**
     * getCurPage:返回当前的页数
     *
     * @return int
     */
    public int getCurPage() {
        return curPage;
    }

    /**
     * getPageSize:返回分页大小
     *
     * @return int
     */
    public int getPageSize() {
        return pageSize;
    }

    /**
     * getRowsCount:返回总记录行数
     *
     * @return int
     */
    public int getRowsCount() {
        return rowsCount;
    }

    /**
     * getPageCount:返回总页数
     *
     * @return int
     */
    public int getPageCount() {
        return pageCount;
    }
    /**
     * 第一页
     * @return int
     */
    public int first() {
        return 1;
    }
    /**
     * 最后一页
     * @return int
     */
    public int last() {
        return pageCount;
    }
    /**
     * 上一页
     * @return int
     */
    public int previous() {
        return (curPage - 1 < 1) ? 1 :curPage - 1;
    }
    /**
     * 下一页
     * @return int
     */
    public int next() {
        return (curPage + 1 > pageCount)? pageCount : curPage + 1;
    }

    /**
     * 第一页
     * @return boolean
     */
    public boolean isFirst() {
        return (curPage==1)?true:false;
    }

   /**
     * 第一页
     * @return boolean
     */
    public boolean isLast() {
        return(curPage==pageCount)?true:false;
    }
    /**
     * 获取当前页数据
     * @return Collection
     */
    public Collection getData() {
        Collection curData = null;
        if (data != null) {
            int start =(curPage - 1) * pageSize;
            int end = 0;
            if (start +pageSize > rowsCount)
               end = rowsCount;
            else
               end = start + pageSize;
            ArrayListarrayCurData = new ArrayList();
            ArrayListarrayData = null;
            VectorvectorCurData = new Vector();
            VectorvectorData = null;
            booleanisArray = true;
            if (datainstanceof ArrayList) {
               arrayData = (ArrayList) data;
               isArray = true;
            } else if(data instanceof Vector) {
               vectorData = (Vector) data;
               isArray = false;
            }
            for (int i =start; i < end; i++) {
               if (isArray) {
                   arrayCurData.add(arrayData.get(i));
               } else {
                   vectorData.add(vectorData.elementAt(i));
               }
            }
            if (isArray){
               curData = (Collection) arrayCurData;
            } else {
               curData = (Collection) vectorCurData;
            }
        }
        return curData;
    }
    /**
     * 获取工具条
     * @return String
     */
    public String getToolBar(String fileName){
        String temp="";
       if(fileName.indexOf("?")==-1)
        {
           temp="?";
        }
        else
        {
           temp="&";
        }
        String str="<form method='post'name='frmPage' action='"+fileName+"'>";
        str+="<palign='center'>";
        if(isFirst())
            str+="首页 上一页&nbsp;";
        else
        {
           str+="<a href='"+fileName+temp+"cur_page=1'>首页</a>&nbsp;";
           str+="<a href='"+fileName+temp+"cur_page="+(curPage-1)+"'>上一页</a>&nbsp;";
        }
        if(isLast())
            str+="下一页 尾页&nbsp;";
        else
        {
           str+="<ahref='"+fileName+temp+"cur_page="+(curPage+1)+"'>下一页</a>&nbsp;";
           str+="<a href='"+fileName+temp+"cur_page="+pageCount+"'>尾页</a>&nbsp;";
        }
        str+="&nbsp;共<b>"+rowsCount+"</b>条记录&nbsp;";
        str+="&nbsp;转到<select name='page'onChange=\"location='"+fileName+temp+"cur_page='+this.options[this.selectedIndex].value\">";
        for(int i=1;i<=pageCount;i++)
        {
           if(i==curPage)
               str+="<option value='"+i+"' selected>第"+i+"页</option>";
            else
               str+="<option value='"+i+"'>第"+i+"页</option>";
        }
        str+="</select></p></form>";
        return str;
    }
}
教学-传智播客-项目视频经典之作巴巴运动网106集-27实现Web层的分页功能源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\hibernate-distribution-3.3.2.GA\lib\required" 目录下的jar文件: (共7个) antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar javassist-3.9.0.GA.jar jta-1.1.jar slf4j-api-1.5.8.jar slf4j-nop-1.5.2.jar (二)、JPA: 位于 "\Hibernate\hibernate-entitymanager3.4.0.GA" 目录下的jar文件: hibernate-entitymanager.jar ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar (三)、Spring: 位于 "\spring-framework-2.5.5\dist" 目录下的jar文件: spring.jar 位于 "\spring-framework-2.5.5\lib\aspectj" 目录下的jar文件: (共3个) aspectjrt.jar aspectjweaver.jar 位于 "\spring-framework-2.5.5\lib\cglib" 目录下的jar文件: (共1个) cglib-nodep-2.1_3.jar 位于 "\spring-framework-2.5.5\lib\j2ee\" 目录下的jar文件: common-annotations.jar 位于 "\spring-framework-2.5.5\lib\jakarta-commons" 目录下的jar文件: commons-dbcp.jar commons-pool.jar commons-logging.jar (四)、Struts: 位于 "\Struts\struts-1.3.10\struts-1.3.10-all\struts-1.3.10\lib" 目录下的jar文件: (共20个) antlr-2.7.2.jar(与Hibernate所含antlr-2.7.6.jar文件重复,删除) bsf-2.3.0.jar commons-beanutils-1.8.0.jar commons-chain-1.2.jar commons-digester-1.8.jar commons-fileupload-1.1.1.jar commons-io-1.1.jar commons-logging-1.0.4.jar commons-validator-1.3.1.jar jstl-1.0.2.jar(改为:\spring-framework-2.5.5\lib\j2ee\jstl.jar) oro-2.0.8.jar standard-1.0.6.jar(改为:\spring-framework-2.5.5\lib\jakarta-taglibs\standard.jar) struts-core-1.3.10.jar struts-el-1.3.10.jar struts-extras-1.3.10.jar struts-faces-1.3.10.jar struts-mailreader-dao-1.3.10.jar struts-scripting-1.3.10.jar struts-taglib-1.3.10.jar struts-tiles-1.3.10.jar (五)、Spring+Struts: \spring-framework-2.5.5\dist\modules\spring-webmvc-struts.jar MySQL: mysql-connector-java-5.1.16-bin.jar 运行: http://localhost:8090/control/center/main.do
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值