zoukankan      html  css  js  c++  java
  • 简单的分页

    1.定义PageBean

    package com.shenqz.util;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.poi.ss.formula.functions.T;
    
    /**
     * 
     * @author Administrator
     *
     * @param <T>
     */
    @SuppressWarnings("hiding")
    public class PageBean<T> implements Serializable {
    
    private static final long serialVersionUID = -6710532081301192385L;
    
        /**
        * 基本属性分析:
        * 1.当前页 currentPage
        * 2.每页多少数据 pageSize
        * 3.数据总条数 totalCount
        * 4.总页数 pageCount
        * 5.数据集合 List<T> list
        * 6.每页显示的最多的页码数 pageNumSize
        * 7.拼接的分页字符串 pageHtml
        */
        private int currentPage = 1;
        
        private int pageSize = 2;
        
        private int totalCount;
        
        private int pageCount;
        
        private List<T> list;
        
        private int pageNumSize = 5;
        
        private String pageHtml;
        /**
        * 基本逻辑分析:
        * 1.list总数判断得出totalCount和pageCount
        * 2.currentPage*pageSize得出startRow和endRow
        * 3.通过list.submit(startRow,endRow)得出需要展示的当前页的数据;
        * 4.通过currentPage、pageSize、totalCount、pageCount拼出分页html字符串前台
        * 需要拼接的项目有首页、上一页、下一页、末页以及中间具体页码
        * 5.前台点击上述项目时,ajax传递currentPage和pageSize及查询条件至后台
        * 6.根据查询条件查询出list,和currentPage和PageSize传入PageBean对象生成需要展示的list以及分页html
        */
        
        /**
        * <p>Description: pageBean初始化方法</p>
        * @param list 数据集合 currentPage 页面传递的当前页码 pageSize 页面传递的pageSize
        */
        public void initPage(List<T> list, Integer currentPage){
            //1.初始化各属性的值
            if(currentPage != null && currentPage >= 1){
                this.currentPage = currentPage;
            }
            
            this.list = list;
            this.totalCount = this.list.size();
            this.pageCount = totalCount%this.pageSize == 0?totalCount/this.pageSize:totalCount/this.pageSize+1;
            int startRow = (this.currentPage-1)*this.pageSize;
            int endRow = this.currentPage*this.pageSize;
            if(endRow > list.size()){
                endRow = list.size();
            }
            //2.拼接分页html
            this.pageHtml = initPageHtml();
            //3.截取list
            if(!this.list.isEmpty()){
                this.list = this.list.subList(startRow, endRow);
            }
        }
        
        /**
        * 拼接分页html
        */
        public String initPageHtml(){
            /**
            * 基本逻辑分析:
            * 1.判断list是否为空
            * 2.根据currentPage判断是否有首页、上一页、下一页、末页
            */
            StringBuffer sb = new StringBuffer();
            if(!this.list.isEmpty()){
                /**
                * 样式及hover
                */
                String background = "background: #2db3c1;border: 1px solid #2db3c1;color: #fff;";
                String style = "text-decoration:none;padding: 8px 10px;margin-left: 3px;border: 1px solid #cdcccc;color: #2db3c1;cursor: pointer;max- 50px;";
                String hover = "onmouseover="$(this).attr('style','"+style+background+"');" onmouseout="$(this).attr('style','"+style+"');"";
                
                //页面拼接开始
                String firstPage = "<a href='javascript:skipToPage(1);' style=""+style+"""+hover+">首页</a>";
                sb.append(firstPage);
                
                String prePage = "";
                if(this.currentPage != 1){
                    prePage = "<a href='javascript:skipToPage("+(this.currentPage-1)+");' style=""+style+"""+hover+">上一页</a>";
                }else{
                    prePage = "<a href='javascript:skipToPage("+(this.currentPage-1)+");' style=""+style+"display:none;""+hover+">上一页</a>";
                }
                sb.append(prePage);
                //当前页小于每页页码数时,默认从第一个开始
                int num = 1;
                //当前页大于每页页码数时
                if(this.currentPage >= pageNumSize){
                    if((this.currentPage+(pageNumSize-1)/2) >= this.pageCount ){
                        num = this.currentPage-(this.pageNumSize-(this.pageCount+1-this.currentPage));
                    }else{
                        num = this.currentPage - (pageNumSize-1)/2;
                    }
                }
                
                int endNum = (num+pageNumSize-1) > pageCount ?pageCount:(num+pageNumSize-1);
                for(int i = num; i <= endNum; i++){
                    String select = "";
                    String pageNumHtml = "&nbsp;<a href='javascript:skipToPage("+i+");' style=""+style+"""+hover+">"+i+"</a>";
                    if(this.currentPage == i){
                        select = background;
                        pageNumHtml = "&nbsp;<a href='javascript:skipToPage("+i+");' style=""+style+select+"">"+i+"</a>";
                    }
                    sb.append(pageNumHtml);
                }
                String nextPage = "";
                if(this.currentPage != this.pageCount){
                    nextPage = "<a href='javascript:skipToPage("+(this.currentPage+1)+");' style=""+style+"""+hover+">下一页</a>";
                }else{
                    nextPage = "<a href='javascript:skipToPage("+(this.currentPage+1)+");' style=""+style+"display:none;""+hover+">下一页</a>";
                }
                sb.append(nextPage);
                
                String endPage = "<a href='javascript:skipToPage("+this.pageCount+");' style=""+style+"""+hover+">末页</a>";
                sb.append(endPage);
                
                sb.append("第<input size=3 maxlength=6 id='currentPage' value="
                        + this.currentPage + ">页 "
                        + "<a href=javascript:ToPage(document.getElementById('currentPage').value)>Go</a>");
                
                sb.append(" 共" + this.pageCount + "页 ");
                sb.append("每页<input size=3 maxlength=6 id='pageSize' value=" + this.pageSize + ">条 ");
                
                String counyStr = "<span>共"+totalCount+"条数据</span>";
                sb.append(counyStr);
            }
            return sb.toString();
        }
        
        public int getCurrentPage() {
            return currentPage;
        }
        
        public void setCurrentPage(int currentPage) {
            if(currentPage >= 1){
                this.currentPage = currentPage;
            }
        }
        
        public int getPageSize() {
            return pageSize;
        }
        
        public void setPageSize(int pageSize) {
            if(pageSize >= 1){
                this.pageSize = pageSize;
            }
        }
        
        public int getTotalCount() {
            return totalCount;
        }
        
        public int getPageCount() {
            return pageCount;
        }
        
        public int getPageNumSize() {
            return pageNumSize;
        }
        
        public void setPageNumSize(int pageNumSize) {
            if(pageNumSize >= 1){
                this.pageNumSize = pageNumSize;
            }
        }
        
        public List<T> getList() {
            return list;
        }
        
        public String getPageHtml() {
            return pageHtml;
        }
    }

    2.controller

    package com.shenqz.controller;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.shenqz.entity.User;
    import com.shenqz.util.PageBean;
    
    @Controller
    public class PageController {
        private PageBean<User> page;
        public PageController(){
            page = new PageBean<User>(); 
        }
        
        @RequestMapping("page.do")
        @ResponseBody
        public String pageHtml(Integer cur,Integer pageSize){
            List<User> list = new ArrayList<User>();
            list.add(new User("shenqz", 27, "15357000000"));
            list.add(new User("shenqz1", 27, "15357000000"));
            list.add(new User("shenqz2", 27, "15357000000"));
            list.add(new User("shenqz3", 27, "15357000000"));
            list.add(new User("shenqz4", 27, "15357000000"));
            list.add(new User("shenqz5", 27, "15357000000"));
            list.add(new User("shenqz6", 27, "15357000000"));
            list.add(new User("shenqz7", 27, "15357000000"));
            list.add(new User("shenqz8", 27, "15357000000"));
            list.add(new User("shenqz9", 27, "15357000000"));
            list.add(new User("shenqz10", 27, "15357000000"));
            list.add(new User("shenqz11", 27, "15357000000"));
            list.add(new User("shenqz12", 27, "15357000000"));
            list.add(new User("shenqz13", 27, "15357000000"));
            list.add(new User("shenqz14", 27, "15357000000"));
            list.add(new User("shenqz15", 27, "15357000000"));
            list.add(new User("shenqz16", 27, "15357000000"));
            list.add(new User("shenqz17", 27, "15357000000"));
            list.add(new User("shenqz18", 27, "15357000000"));
            list.add(new User("shenqz19", 27, "15357000000"));
            list.add(new User("shenqz20", 27, "15357000000"));
            /*PageBean<User> page = new PageBean<User>(); */
            if(cur != null){
                page.setCurrentPage(cur);
            }
            if(pageSize != null){
                if(pageSize != page.getPageSize()){
                    page.setPageSize(pageSize);
                    page.setCurrentPage(1);
                }
            }
            System.out.println("pageSize:"+page.getPageSize());
            page.initPage(list, page.getCurrentPage());
            String str = page.initPageHtml();
            JSONObject object = new JSONObject();
            object.put("page", str);
            object.put("list", page.getList());
            return object.toJSONString();
            
        }
        
        public static void main(String[] args) {
            PageBean<User> page = new PageBean<User>(); 
            System.out.println(page.getCurrentPage());
        }
    }

    3.jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>首页</title>
        <script type="text/javascript" src="js/jquery-1.8.3.js"></script>  
        <script type="text/javascript">
            
            function skipToPage(cur){
                var pageSize = $("#pageSize").val();
                queryList(cur,pageSize);
            }
            function ToPage(cur){
                skipToPage(cur)
            }
            function queryList(cur,pageSize){
                $.ajax({
                    url : "page.do",
                    data : {"cur":cur,"pageSize":pageSize},
                    async : true,
                    type : "post",
                    dataType : "json",
                    success : function(data){
                        var str = JSON.stringify(data.page);
                        str = str.replace(/"/g, "");
                        var list ; 
                         $("#d2").text("");
                        $.each(data.list,function(k){
                            list+="<tr><td>"+data.list[k].username+"</td><td>"+data.list[k].age+"</td><td>"+data.list[k].iphone+"</td></tr>"
                        });
                        
                        $("#d2").append(list);
                        $("#d2").append(str);
                    },
                    error :function(){
                        
                    }
                })
            }
        </script>
    </head>
    <body>
        <a href = "javascript:void(0)" onclick = "queryList();">查询所有</a>
        <div id="d2"></div>
    </body>
    </html>

    4.页面效果

  • 相关阅读:
    【C++】浅谈三大特性之一继承(三)
    【C语言】两种方式实现冒泡排序算法
    【C++】浅谈三大特性之一继承(二)
    【C++】浅谈三大特性之一继承(一)
    【C语言】浅谈可变参数与printf函数
    【C语言】gets()和scanf()函数的区别
    【C语言】模拟实现printf函数(可变参数)
    【C语言】printf()函数详解
    数据分析必备思维之:结构化思维
    手游运营基本功:数据分析工作的内容与要求
  • 原文地址:https://www.cnblogs.com/shenqz/p/8065389.html
Copyright © 2011-2022 走看看