日期:2014-05-16  浏览次数:20369 次

jsp实现分页

这里我以从一个用户表中查询用户信息为例演示其用法:  
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  
   {  
            UserEO userEO=(UserEO)usersList.get(i);%>  
       
        <%=userEO.getUsername()%>  
        <%=userEO.getName()%>  
        <%=userEO.getPhoneNumber()%>  
        <%=userEO.getEmailBox()%>  
        <%=userEO.getAddress()%>  
        <%=userEO.getPostcode()%>  
         
    <%}%>  
     
   
  
  
<%=pageResultSet.getToolBar("list_users.do")%>  
  
  
注意:  
1、如果你觉得分页工具栏不能满足你的要求,  
q网管(Evp;育H9p,  
可以用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.*;  
/** 
 * 
 
Title: PageResultSet 
 
 * 
 * 
 
Description:分页类 
 
 * 
 * 
 
Copyright: Copyright (c) 2004 
 
 * 
 * 
 
Company:youngor-studio(http://www.54youngor.com) 
 
 * @author:伍维波 
 * @version 1.0 
 */  
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, int curPage) {  
        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, int curPage, 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: 
.vf]Y5{p}BuC"W 
返回分页大小 
     * 
     * @return int 
     */  
    public int getPageSize() {  
        return pageSize;  
    }  
  
    /** 
     * getRowsCount:8NsAX教t$nT"TQ返回总记录行数 
     * 
     * @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;