javaWEb中的分页处理

1.改写dao,对service 层提供分页的数据服务:getPageData()   getTotalRecord

    //获取分页数据
    public List<Customer> getPageData(int startindex,int pagesize){
        try{
            String sql = "select * from customer limit ?,?";
            Object params[] = {startindex,pagesize};
            return (List<Customer>) JdbcUtils.query(sql, params, new BeanListHandler(Customer.class));
        }catch (Exception e) {
             throw new DaoException(e);
        }
    }

    //得到总记录数
    public int getTotalrecord(){
        try{
            String sql = "select count(*) from customer";
            Object params[] = {};
            long l =  (Long) JdbcUtils.query(sql,params,new IntegerHandler());
            return (int)l;
        }catch (Exception e) {
             throw new DaoException(e);
        }
    }

2、设计page对象,封装分页的页面数据
    list
    totalpage
在domain下创建page实体
package cn.itcast.domain;

import java.util.List;

//封装页面数据
public class Page {

                private List list;
                private int totalpage;  //记住总页数

                private int totalrecord;
                private int pagesize = 10;

                private int pagenum;   //代表用户想看的页
                private int startindex;  //代表用户想看的页的数据从数据库哪个地方开始取

                private int startPage;  //记住jsp页面显示的起始页码
                private int endPage;  //记往jsp页面显示的结束页码

                private String url;   //记住用于处理分页的servlet

                public Page(int totalrecord,int pagenum){
                                this.totalrecord = totalrecord;

                                if(this.totalrecord%this.pagesize==0){
                                                this.totalpage = this.totalrecord/this.pagesize;
                                }else{
                                                this.totalpage = this.totalrecord/this.pagesize + 1;
                                }

                                this.pagenum = pagenum;  //1
                                this.startindex = (this.pagenum-1)*this.pagesize;

                                //根据用户想看的页pagenum,算出jsp页面的起始和结束页码
                                if(this.totalpage<=10){
                                                this.startPage = 1;
                                                this.endPage = this.totalpage;
                                }else{
                                                //20   18
                                                this.startPage = this.pagenum -4;
                                                this.endPage = this.pagenum + 5;

                                                if(this.startPage<1){
                                                                this.startPage = 1;
                                                                this.endPage = 10;
                                                }

                                                if(this.endPage > this.totalpage){
                                                                this.endPage = this.totalpage;
                                                                this.startPage = this.totalpage-9;
                                                }

                                }
                }

                public String getUrl() {
                                return url;
                }

                public void setUrl(String url) {
                                this.url = url;
                }

                public int getStartPage() {
                                return startPage;
                }

                public void setStartPage(int startPage) {
                                this.startPage = startPage;
                }

                public int getEndPage() {
                                return endPage;
                }

                public void setEndPage(int endPage) {
                                this.endPage = endPage;
                }

                public List getList() {
                                return list;
                }

                public void setList(List list) {
                                this.list = list;
                }

                public int getTotalpage() {
                                return totalpage;
                }

                public void setTotalpage(int totalpage) {
                                this.totalpage = totalpage;
                }

                public int getTotalrecord() {
                                return totalrecord;
                }

                public void setTotalrecord(int totalrecord) {
                                this.totalrecord = totalrecord;
                }

                public int getPagesize() {
                                return pagesize;
                }

                public void setPagesize(int pagesize) {
                                this.pagesize = pagesize;
                }

                public int getPagenum() {
                                return pagenum;
                }

                public void setPagenum(int pagenum) {
                                this.pagenum = pagenum;
                }

                public int getStartindex() {
                                return startindex;
                }

                public void setStartindex(int startindex) {
                                this.startindex = startindex;
                }

}
3、改写service ,它对 web层提供分页的数据服务   Page getpageData(String pagenum)

public Page getPageData(String pagenum,String url){

                                int totalrecord = dao.getTotalrecord();

                                if(pagenum==null){
                                                //代表用户想看第一页的数据
                                                Page page = new Page(totalrecord,1);  //算出了总页数,以及用户想看的页从数据库哪个地方开始取
                                                List list = dao.getPageData(page.getStartindex(), page.getPagesize());
                                                page.setList(list);
                                                page.setUrl(url);
                                                return page;
                                }else{
                                                //代表用户想看指定的页
                                                Page page = new Page(totalrecord,Integer.parseInt(pagenum));
                                                List list = dao.getPageData(page.getStartindex(), page.getPagesize());
                                                page.setList(list);
                                                page.setUrl(url);
                                                return page;
                                }
                }

分页jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 当前第[${page.pagenum }]页&nbsp;&nbsp;&nbsp;

    <c:if test="${page.pagenum>1}">
    <a href="${page.url }?pagenum=${page.pagenum-1 }">上一页</a>
    </c:if>
    &nbsp;
                <c:forEach var="pagenum" begin="${page.startPage}" end="${page.endPage}">
                                [<a href="${page.url }?pagenum=${pagenum}">${pagenum }</a>]
                </c:forEach>
                &nbsp;

                <c:if test="${page.pagenum<page.totalpage}">
                <a href="${page.url }?pagenum=${page.pagenum+1 }">下一页</a>
                </c:if>

                &nbsp;&nbsp;&nbsp;
                共[${page.totalpage }]页,共[${page.totalrecord}]纪录,

                <input type="text" style="width: 30px" id="pagenum">
                <input type="button" value=" GO " οnclick="goWhich(document.getElementById('pagenum'))">

                <script type="text/javascript">
                                function goWhich(input){
                                                var pagenum = input.value;
                                                if(pagenum==null || pagenum==""){
                                                                alert("请输入页码!");
                                                                return;
                                                }

                                                if(!pagenum.match("\\d+")){
                                                                alert("请输入数字!");
                                                                input.value="";
                                                                return;
                                                }

                                                if(pagenum<1 || pagenum>${page.totalpage}){
                                                                alert("无效的页码!");
                                                                input.value="";
                                                                return;
                                                }
                                                window.location.href="${page.url }?pagenum=" + pagenum;
                                }
                </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值