JSP实现分页,动态生成页码,解决页码显示过多问题

Controller返回分页数据之后,发现页码显示过多,影响美观.

JSP实现分页,动态生成页码,解决页码显示过多问题_第1张图片

经过处理过后,看着就舒服多了

JSP实现分页,动态生成页码,解决页码显示过多问题_第2张图片

下面是中间页实现代码

model.addAttribute("page", pageBean);

pageBean的属性看下面

<%--中间页--%>
    <%--显示6页中间页[begin=起始页,end=最大页]--%>
    <%--总页数没有6页--%>
    
        
            
            
        
        <%--页数超过了6页--%>
        
            
            
            <%--如果begin减1后为0,设置起始页为1,最大页为6--%>
            
                
                
            
            <%--如果end超过最大页,设置起始页=最大页-5--%>
            
                
                
            
        
    
    <%--遍历--%>
    
        <%--当前页,选中--%>
        
            
                
  • ${i}
  • <%--不是当前页--%>
  • ${i}
  • 逻辑比较简单,多看几遍就能明白.

    分页使用的BootStrap,官网就有


    下面是一些其他数据和说明教程,不需要的可无视.
    个人比较喜欢将分页数据封装到JavaBean里,使用起来比较舒服,看着也不乱.

    /**
     * Created with IntelliJ IDEA.
     *
     * @author: ChuRuo Xu
     */
    public class PageBean {
        /**
         * 当前页
         */
        private Integer currentPage;
        /**
         * 每页显示条数
         */
        private Integer pageSize;
        /**
         * 总记录数
         */
        private Integer totalCount;
        /**
        * 总页数
        */
        private Integer totalPage;
        /**
         * 每页数据内容
         */
        private List content;

    总记录数到数据库查询count即可,使用的Mybatis

    
        

    有了当前页(起始页面肯定是1),每页显示条数(自己设置),总记录数,然后可以算出总页数.

    总页数 = (总记录数 - 1 + 每页显示条数) / 每页显示条数

    然后就可以算出[从第几条数据开始查询]

    begin = (当前页 - 1) * 每页显示条数

    分页查询语句用limit,简单, 传递参数不要忘记使用@Param,建议使用这种方式传参,阅读性好!

    
        
    /**
         * 分页查询客户信息
         *
         * @param begin    从第几条开始
         * @param pageSize 每页条数
         * @return List
         */
        List findAll(@Param("begin") Integer begin, @Param("pageSize") Integer pageSize);
    到此PageBean的所有数据都有了,返回到页面从域中取出来即可


    首页和尾页的判断

    <%--如果是第一页,不允许点击--%>
    
        
            
  • <%-- 点击到首页--%>

  • <%--如果是最后一页,不允许点击--%>
    
        
            
  • <%-- 点击到尾页--%>


  • 你可能感兴趣的:(JSP)