有没有一个简单的方法实现分页 
使有struct和jsp技术

解决方案 »

  1.   

    用个分页的JavaBean就可以了,我用过这个:
    /**
     * ----------------------------------------------------------------------------------------
     * @author 宋尚忠
     * ----------------------------------------------------------------------------------------
     * 项目名称:  教材管理系统 模块名称: 公共工具包-分页查询与显示
     * ----------------------------------------------------------------------------------------
     *//**
     * @author: Jqg TODO: 分页显示-保存分页基础信息
     * ----------------------------------------------------------------------------------------
     * @version:1.0
     * @createdate: 2007-08-06
     * ----------------------------------------------------------------------------------------
     */
    package com.tjsoft.fish.util;
    /**
     * 分页Bean 保存分页信息
     * @author jqg
     *
     */
    public class PageInfo {

    /** 分页基础信息 */
    protected long maxRecordNum;      //全部记录数
    protected long recordPerPage;     //每页显示记录数
    protected long currentRecordNum;  //当前起始记录数
    protected long currentPageNum;    //当前页码


    private long maxPageNum;        //全部页数属性不要直接访问,因为它的值是通过maxRecordNum与recordPerPage计算出的



    public void init(){
    this.maxRecordNum = 0L;                          //全部记录数
    this.currentRecordNum = 0L;                      //当前查询起始记录数 
    this.recordPerPage = IConstants.ROWS_PER_PAGE;   //默认每页显示记录数

    this.currentPageNum = 1L;                        //当前页码
    this.maxPageNum =1L;                            //总页数
    }

        /**  构造方法 */
    public PageInfo() {
    init();
    }
    /**
     * 构造方法二,直接设置当前页数
     * @param currentPageNum
     */
    public PageInfo(long currentPageNum) {

    init();
    this.currentPageNum = currentPageNum ;

    }

    /**
     * 构造方法三,直接设置当前页码,每页最大记录数
     * @param currentPageNum
     * @param recordPerPage
     */
    public PageInfo(long currentPageNum,long recordPerPage) {
    init();
    this.currentPageNum = currentPageNum;
    recordPerPage = recordPerPage ;
    }




    /**
     * 设置当前页数-由页面提交该信息
     * 不可用,private方法
     * @param long 当前页数
     * @return
     */

    public void setCurrentPageNum(long currentPageNum) {

    this.currentPageNum = currentPageNum;

    }
    /**
     * 返回当前显示页码
     * @return
     */
    public long getCurrentPageNum() {
    // 如果当前页大于了 最大页,则修改为最大页码
    this.currentPageNum = this.currentPageNum <= this.getMaxPageNum() ?          //直接用maxPageNum会造成信息更新不同步现象
    this.currentPageNum : this.maxPageNum;
    if(currentPageNum==0) currentPageNum = 1;
    return currentPageNum;
    }

    /**
     * 设置当前页数,验证是否符合规范
     * @param currentPageNum :String 类型
     */
    public  void setCurrentPageNum(String currentPageNum ) {
    //为null 或者为空
    if( currentPageNum == null || currentPageNum.trim().length() < 1 ) {
    currentPageNum = "1";
    }
     //不符合[0-9],保留当前页
             if (!currentPageNum.matches("[0-9]+")) {
              currentPageNum = String.valueOf(this.currentPageNum);            
             }
             //小于0字符,到起始页
             if (Long.parseLong(currentPageNum) < 1L) {
              currentPageNum = "1";
             } 
             //大于最大页数,取最大页
             else if (Long.parseLong(currentPageNum) > this.maxPageNum ) {
              currentPageNum = String.valueOf( this.maxPageNum );
             }
             //call 内部 set当前页方法
            this.setCurrentPageNum(Long.parseLong(currentPageNum));
    }
    /**
     * 返回总记录数
     * @return
     */
    public long getMaxRecordNum() {
    return maxRecordNum;
    }
    /**
     * 设置总记录数-由后台查询设置
     * @param maxRecordNum
     */
    public void setMaxRecordNum(long maxRecordNum) {
    this.maxRecordNum = maxRecordNum;
    setMaxPageNum(maxRecordNum);
    }

     private void setMaxPageNum(long maxRecordNum){
    if( this.maxRecordNum > 0L ) {//如果总记录数大于0
    if( this.maxRecordNum % this.recordPerPage == 0L ) {
    this.maxPageNum = this.maxRecordNum / this.recordPerPage;
    }
    else {
    this.maxPageNum = this.maxRecordNum / this.recordPerPage + 1L;
    }
    }
    else {
    this.maxPageNum = 1L;
    }
    this.maxPageNum = maxPageNum ;

    }
    /**
     * 设置每页显示记录数
     * 不可用,private方法
     * @param recordPerPage
     */
    protected void setRecordPerPage(long recordPerPage) {
    this.recordPerPage = recordPerPage;
    }
    /**
     * 返回每页显示记录数
     * @return
     */
    public long getRecordPerPage( ) {
    return recordPerPage;
    }


    /**
     * 返回当前查询记录数
     * @return
     */
    public long getCurrentRecordNum() {
    this.currentRecordNum = this.currentPageNum <= 1L ? 0 : (this.currentPageNum - 1L ) * this.recordPerPage;
    return currentRecordNum;
    }
    /**
     * 返回总页数
     * @return
     */
    public long getMaxPageNum() {

    return maxPageNum;
    }

    /**
     * tesing
     * @param args
     */
    public static void  main(String args[]) {
    PageInfo pageInfo = new PageInfo();
    // pageInfo.setCurrentPageNum(4);
    // pageInfo.setMaxRecordNum(15);
    //
    pageInfo.setMaxRecordNum(15);//设置记录总数
        pageInfo.setCurrentPageNum(2);//设置当前页
        System.out.println("~~~~~~~当前页~~~~~~~~~~~~"+pageInfo.getCurrentPageNum());
        pageInfo.setCurrentPageNum(pageInfo.getCurrentPageNum() + 1);//下一页
        System.out.println("~~~~~~~~~~~~下一页~~~~~~~"+pageInfo.getCurrentPageNum()+"\n即将起始的记录:"+pageInfo.getCurrentRecordNum()+pageInfo.getMaxPageNum());
        
    }}