java+stucts2后台分页

jsp部分代码:

<div class="pagebar holder"><s:property value="currentPage" />
            页 共
            <s:property value="page.getTotalPages()" /><s:if test="currentPage!=1">
                <a
                    href="<s:url value="work_manage">
                         <s:param name="currentPage" value="currentPage"/>
                         <s:param name="pagemethod" value="'previous'"/>
                     </s:url>">上一页</a>
            </s:if>
            <s:else>
                <a
                    href="<s:url value="work_manage">
                         <s:param name="currentPage" value="currentPage"/>
                         <s:param name="pagemethod" value="'first'"/>
                     </s:url>">首页</a>
            </s:else>

            <s:if test="currentPage!=page.getTotalPages()">
                <a
                    href="<s:url value="work_manage">
                         <s:param name="currentPage" value="currentPage"/>
                         <s:param name="pagemethod" value="'next'"/>
                     </s:url>">下一页</a>
            </s:if>
            <s:else>
                <a
                    href="<s:url value="work_manage">
                         <s:param name="currentPage" value="currentPage"/>
                         <s:param name="pagemethod" value="'last'"/>
                     </s:url>">尾页</a>
            </s:else>

        </div>
        <div>
            <input id=inputpage style="width: 60px; height: 25px" type="text"/ >
            <button id=jumppage style="margin-bottom: 10px;">跳到这页</button>
        </div>

js:

        //$(function(){
        //  $("div.holder").jPages({
        //    containerID : "itemContainer"
        //  });
        //});这部分使用了jq的pagination,比较简单,无刷新分页,不过不适合数据量大的时候
        $("#jumppage").click(function() {
            var currentPage=$("#inputpage").val();
            var pagemethod='next';
            var page = parseInt($("#inputpage").val())-1;
            if(page==0){
                currentPage="1";
                pagemethod="first";
            }
            window.location.href="work_manage?"+"currentPage="+currentPage+"&pagemethod="+pagemethod;
            //$("div.holder").jPages(page);
        });

后台执行的分页一个函数(根据自己的实际情况进行处理):

    public String execute() throws Exception {
        // 获得常用邮箱
        emailArr = EmailDao.getEmail();//操作数据库的函数
        emailNum = emailArr.size();
        if (null != currentPage && null != pagemethod) {
            page = NewPageService.getPager(currentPage, pagemethod, emailNum,
                    10);
        } else {
            currentPage = "1";
            pagemethod = "first";
            page = NewPageService.getPager(currentPage, pagemethod, emailNum,
                    10);
        }
        this.setCurrentPage(String.valueOf(page.getCurrentPage()));
        availableItems = EmailDao.getRows(page.getPageSize(),
                page.getStartRow());
        System.out.println(currentPage + pagemethod);
        return SUCCESS;
    }

分页类:

public class NewPageService {
    public NewPager getPager(String currentPage, String pagerMethod,
            int totalRows) {
        // 定义pager对象,用于传到页面
        NewPager pager = new NewPager(totalRows);
        // System.out.println("执行到getPager了");
        // 如果当前页号为空,表示为首次查询该页
        // 如果不为空,则刷新pager对象,输入当前页号等信息
        if (currentPage != null) {
            pager.refresh(Integer.parseInt(currentPage));
            // System.out.println("确认完当前的currentPage");
        } else {
            // currentPage="1";
            pager.refresh(1);
        }
        // 获取当前执行的方法,首页,前一页,后一页,尾页。
        // System.out.println("当前要执行的页面动作为:"+pagerMethod);
        if (pagerMethod != null) {
            if (pagerMethod.equals("first")) {
                pager.first();
            } else if (pagerMethod.equals("previous")) {
                pager.previous();
            } else if (pagerMethod.equals("next")) {
                pager.next();
            } else if (pagerMethod.equals("last")) {
                pager.last();
            }
        } else {
            pager.first();
        }
        return pager;
    }

    public static NewPager getPager(String currentPage, String pagerMethod,
            int totalRows, int pageSize) {
        // 定义pager对象,用于传到页面
        NewPager pager = new NewPager(totalRows, pageSize);
        // System.out.println("执行到getPager了");
        // 如果当前页号为空,表示为首次查询该页
        // 如果不为空,则刷新pager对象,输入当前页号等信息
        if (currentPage != null) {
            pager.refresh(Integer.parseInt(currentPage));
            System.out.println("确认完当前的currentPage");
        } else {
            // currentPage="1";
            pager.refresh(1);
        }
        // 获取当前执行的方法,首页,前一页,后一页,尾页。
        System.out.println("当前要执行的页面动作为:"+pagerMethod);
        if (pagerMethod != null) {
            if (pagerMethod.equals("first")) {
                pager.first();
            } else if (pagerMethod.equals("previous")) {
                pager.previous();
            } else if (pagerMethod.equals("next")) {
                pager.next();
            } else if (pagerMethod.equals("last")) {
                pager.last();
            }
        } else {
            pager.first();
        }
        return pager;
    }

}
public class NewPager {
    private int totalRows; // 总行数
    private int pageSize = 10; // 每页显示的行数
    private int currentPage; // 当前页号
    private int totalPages; // 总页数
    private int startRow; // 当前页在数据库中的起始行

    public NewPager() {
    }

    /**
     * 默认每页10个
     * 
     * @param _totalRows
     */
    public NewPager(int _totalRows) {
        totalRows = _totalRows;
        totalPages = totalRows / pageSize;
        // System.out.println("总共的页数:"+totalPages);
        int mod = totalRows % pageSize;
        if (mod > 0) {
            totalPages++;
        }
        currentPage = 1;
        startRow = 0;
    }

    /**
     * 可自定义每页显示多少数
     * 
     * @param _totalRows
     * @param _pageSize
     */
    public NewPager(int _totalRows, int _pageSize) {
        totalRows = _totalRows;
        pageSize = _pageSize;
        totalPages = totalRows / pageSize;
        // System.out.println("总共的页数:"+totalPages);
        int mod = totalRows % pageSize;
        if (mod > 0) {
            totalPages++;
        }
        currentPage = 1;
        startRow = 0;
    }

    public void first() {
        currentPage = 1;
        startRow = 0;
    }

    public void previous() {
        if (currentPage == 1) {
            return;
        }
        currentPage--;
        startRow = (currentPage - 1) * pageSize;
    }

    public void next() {
        if (currentPage < totalPages) {
            currentPage++;
        }
        System.out.println("最后的currentPage:"+currentPage);
        startRow = (currentPage - 1) * pageSize;
    }

    public void last() {
        currentPage = totalPages;
        startRow = (currentPage - 1) * pageSize;
    }

    public void refresh(int _currentPage) {
        currentPage = _currentPage;
        if (currentPage > totalPages) {
            last();
        }
    }

    public int getStartRow() {
        return startRow;
    }

    public int getTotalPages() {
        return totalPages;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setTotalRows(int totalRows) {
        this.totalRows = totalRows;
    }

    public void setStartRow(int startRow) {
        this.startRow = startRow;
    }

    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotalRows() {
        return totalRows;
    }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值