必威体育Betway必威体育官网
当前位置:首页 > IT技术

jsp 实现分页操作

时间:2019-08-22 17:42:06来源:IT技术作者:seo实验室小编阅读:69次「手机版」
 

jsp分页

  • 分页依据:

    select 字段列表 from 表名 limit m,n;

    m: 表示起始记录,并且从0开始

    n: 查询记录的个数,每页记录数

  • 分页信息

    共多少页

    有没有上一页

    有没有下一页

    当前页

    注:分页信息类Page

    注2:创建分页信息辅助类PageUtil

    public static Page createPage(int everyPage,int totalCount,int currentPage)

    everyPage: 程序员定

    totalCount: 总记录数,查询数据库表记录 select count(*) from 表名

    currentPage: 从默认第一页开始,下一页= 当前页+1 上一页 = 当前页-1

  • 分页数据集合List

    依据查询语句获得集合: select 字段列表 from 表名 limit m,n;

    m: beginIndex

    n: everyPage

  • 具体实现:::

    UserBiz:

    //分页

    public int getCont();
    public List<User> findByPage(Page page);
    
    • 1
    • 2
    • 3

    UserBizImpl:

    @Override
        public int getCont() {
            String sql = "select count(*) as count from user";
            CountUtil count = (CountUtil) udao.get(sql, CountUtil.class);
            return count.getCount();
        }
    
        @Override
        public List<User> findByPage(Page page) {
            String sql = "select * from user limit "+page.getBeginIndex()+", "+page.getEveryPage();
            return udao.query(sql, User.class);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    servlet::UserServlet

    int everyPage = 5;//每页记录数
            int totalCount = ubiz.getCont();//获取总记录数
            //点击链接重新获取当前页
    String scurrentPage = request.getparameter("currentPage");
            int currentPage = 1; //当前页,默认1
            if(scurrentPage == null){
                currentPage = 1;//从第一页开始访问
            }else{
                currentPage = integer.parseInt(scurrentPage);
            }
            //分页信息
            Page page = PageUtil.createPage(everyPage, totalCount, currentPage);
            //分页数据信息
            List<User> list = ubiz.findByPage(page);
    
            request.setattribute("page", page);
            request.setAttribute("list", list);
            //转发到userlist.jsp
            request.getRequestDispatcher("/back/manager/userlist.jsp").forward(request, response);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    userlist.jsp中的分页表现

    <table width="461" height="24" border="1" cellpadding="0" cellspacing="0">
      <tr>
        <td width="199">当前为第${page.currentPage}页,共${page.totalPage}页</td>
        <td width="256">
        <c:choose>
            <c:when test="${page.hasPrePage}">
                <a href="<%=path %>/user.do?method=list&currentPage=1">首页</a> | 
        <a href="<%=path %>/user.do?method=list&currentPage=${page.currentPage -1 }">上一页</a>
            </c:when>
            <c:otherwise>
                首页 | 上一页
            </c:otherwise>
        </c:choose>
    
        <c:choose>
            <c:when test="${page.hasNextPage}">
                <a href="<%=path %>/user.do?method=list&currentPage=${page.currentPage + 1 }">下一页</a> | 
        <a href="<%=path %>/user.do?method=list&currentPage=${page.totalPage }">尾页</a>
            </c:when>
            <c:otherwise>
                下一页 | 尾页
            </c:otherwise>
        </c:choose>
    
    </td>
      </tr>
    </table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    附::::page类(分页信息实体类)

    public class Page {
        private int everyPage;          //每页显示记录数
        private int totalCount;         //总记录数
        private int totalPage;          //总页数
        private int currentPage;        //当前页
        private int beginIndex;         //查询起始点
        private boolean hasPrePage;     //是否有上一页
        private boolean hasNextPage;    //是否有下一页
        public Page(int everyPage, int totalCount, int totalPage, 
                int currentPage,int beginIndex, boolean hasPrePage,
                boolean hasNextPage) {  //自定义构造方法
            this.everyPage = everyPage;
            this.totalCount = totalCount;
            this.totalPage = totalPage;
            this.currentPage = currentPage;
            this.beginIndex = beginIndex;
            this.hasPrePage = hasPrePage;
            this.hasNextPage = hasNextPage;
        }
        ///////get,set方法略
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    附:pageutil 分页信息辅助类

    public class PageUtil {
        //创建Page对象
        public static Page createPage(int everyPage,int totalCount,int currentPage) {//创建分页信息对象
            everyPage = getEveryPage(everyPage);
            currentPage = getCurrentPage(currentPage);
            int totalPage = getTotalPage(everyPage, totalCount);
            int beginIndex = getBeginIndex(everyPage, currentPage);
            boolean hasPrePage = getHasPrePage(currentPage);
            boolean hasNextPage = getHasNextPage(totalPage, currentPage);
            return new Page(everyPage, totalCount, totalPage, currentPage,
                    beginIndex, hasPrePage,  hasNextPage);
        }
        // 以下方法辅助创建Page对象
        public static int getEveryPage(int everyPage) {     //获得每页显示记录数
            return everyPage == 0 ? 10 : everyPage;
        }
        public static int getCurrentPage(int currentPage) { //获得当前页
            return currentPage == 0 ? 1 : currentPage;
        }
        public static int getTotalPage(int everyPage,int totalCount) {//获得总页数
            int totalPage = 0;
            if(totalCount != 0 &&totalCount % everyPage == 0) {
                totalPage = totalCount / everyPage;
            } else {
                totalPage = totalCount / everyPage + 1;
            }
            return totalPage;
        }
        public static int getBeginIndex(int everyPage,int currentPage) {//获得起始位置
            return (currentPage - 1) * everyPage;
        }
        public static boolean getHasPrePage(int currentPage) {//获得是否有上一页
            return currentPage == 1 ? false : true;
        }
        public static boolean getHasNextPage(int totalPage, int currentPage) {  //获得是否有上一页
            return currentPage == totalPage || totalPage == 0 ? false : true;
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    相关阅读

    如何在JSP中清空Session中的值?

    session.invalidate(); 是把session内的所有属性 都清除,session.removeAttribute("uiUsers");是清除session中的 "uiUsers" 属性,就

    ios热更新JSPatch

    由于在公司里使用的是企业级证书,不需发布到APPStore上,那么热更新就有必要写起来了,毕竟要是线上出了Bug,心里还是慌得一笔的哈哈。

    什么是jsp

    1. 什么是jspJSP是Java Server Page的缩写,是由Sun公司倡导,许多公司参与,于1999年推出的一种Web服务设计标准。JSP已经成为开发动态

    在jsp页面中插入图片,但却无法显示

    今天在搭建ssm框架式进行测试,发现请求的jsp文件的图片无法显示。查看页面源代码为:jsp页面的代码为:<body> <table width="100%" b

    JSPatch 的坑 (后续遇到再补上)

    Bang 神的JSPatch  很是牛逼  还记得当初  热更新问题 苹果粑粑的 大清洗嘛.  不过经过实践 ,  目前只要配置公秘钥 还是可

    分享到:

    栏目导航

    推荐阅读

    热门阅读