分页功能开发

目录
1.自主开发分页
2.PageHelper工具分页

      在开发过程中一些数据的显示较多的时候,需要使用分页来进行多数据的显示处理。像后台管理中的数据管理。

    

分页开发的知识点:

       (1)数据库操作:
         获取数据表中总数据条数:select count(*) from 数据表;
         获取限制返回数据条数信息:select * from 数据表 limit ?,? ;
         注意:limit第一个参数:起始条数下标。第二个参数:需要查询的条数

        (2)需要的页面数据:
         当前页,总页数,总条数,每页条数,

         (3)逻辑计算:
         起始条数下标 = (当前页 - 1) * 每页条数
         总页数 = (总条数%每页条数) == 0 ? 总条数/每页条数 : 总条数/每页条数 + 1

基本步骤:

  1. 创建页面类 (Page)
public class Page {

    private int currentPage; //当前页
    private int totalPage;     //总页数
    private int totalNum;    //总条数
    private int pageCount = 3;  //每页条数 (就是每页显示的数据条数)
    
       //补全get、set方法   
}
  1. 创建两个操作数据库数据的方法
    这里不作具体的代码操作了。一个是获取数据表中数据的总条数。一个是带参的限制返回条数。
public int getCount()//返回数据表中的总条数
public ResultSet getLimitBooks(int pagestart,int pagesize);//限制返回条数

//使用了JDBC直接操作数据库信息

3.创建一个servlet,用来模拟请求操作

@WebServlet("/textPage")
public class textPage extends HttpServlet {
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           
               //定义的操作数据库的类。
        connectMysql connectMysql = new connectMysql();
        
        //获取用户想要跳转的页数
        String page = request.getParameter("page");
        int currentPage = 0;
        
        if(page == null) { //判断一开始的时候
            currentPage = 1;
        }else {
            currentPage = Integer.parseInt(page);
        }
        
        //获取数据库的总条数
        int count = connectMysql.getCount();
        
        //分页bean
        Page pageBean = new Page();
        pageBean.setCurrentPage(currentPage);//设置当前页数
        pageBean.setTotalNum(count);//设置总条数
        
        //计算总页数
        int totalPage = (count % pageBean.getPageCount()) == 0 ? count/pageBean.getPageCount() : count/pageBean.getPageCount()+1;
        
        pageBean.setTotalPage(totalPage); //设置总页数
        
        //求起始条数     起始条数下标 = (当前页 - 1) * 每页条数
        int pagestart = (currentPage - 1) * pageBean.getPageCount();
        
        //显示条数获取信息        (接收的是“起始条数下标”、“需要展示的条数”)
        ResultSet books = connectMysql.getLimitBooks(pagestart, pageBean.getPageCount());
        
        
        request.setAttribute("books", books);
        request.setAttribute("pageBean", pageBean);        
        request.getRequestDispatcher("index.jsp").forward(request, response);
    }

}

页面展示分页写法:

  1. 第一种
    在这里插入图片描述
 <!-- 分页设置 -->
<div style="text-align: center;margin-top: 10px;">
   <a href="/text/textPage?page=1">首页</a>
   <a href="/text/textPage?page=<%=pages.getCurrentPage() <= 1 ? pages.getCurrentPage() : pages.getCurrentPage()-1 %>">上一页</a>
   <a href="/text/textPage?page=<%=pages.getCurrentPage() >= pages.getTotalPage() ? pages.getTotalPage() : pages.getCurrentPage()+1 %>">下一页</a>
   <a href="/text/textPage?page=<%=pages.getTotalPage() %>">尾页</a>
   一共<%=pages.getTotalPage() %>,当前<%=pages.getCurrentPage() %></div>
  1. 第二种
    在这里插入图片描述
<div style="text-align: center;margin-top: 10px;">
    
        <a href="/text/textPage?page=<%=pages.getCurrentPage() <= 1 ? pages.getCurrentPage() : pages.getCurrentPage()-1 %>">上一页</a>
        <%
            for(int i = 1; i <= pages.getTotalPage(); i++){%>
                
                [<a href="/text/textPage?page=<%=i %>"><%=i %></a>]
            
        <% }%>
        <a href="/text/textPage?page=<%=pages.getCurrentPage() >= pages.getTotalPage() ? pages.getTotalPage() : pages.getCurrentPage()+1 %>">下一页</a>
    </div>
  1. 第三种
    在这里插入图片描述
<div style="text-align: center;margin-top: 10px;">
        <select onchange="location.replace('/text/textPage?page='+this.value);">
            <%
            for(int i = 1; i <= pages.getTotalPage(); i++){
            if(pages.getCurrentPage() == i){
            %>
                <option value="<%=i %>" selected="selected"><%=i %></option>
            <% }else{%>
            
                <option value="<%=i %>"><%=i %></option>
            <%}}%>
        </select>
        一共<%=pages.getTotalPage() %>,当前<%=pages.getCurrentPage() %></div>
  1. 第四种
    在这里插入图片描述
<div style="text-align: center;margin-top: 10px;">
        
            <input type="text" id ="page" onchange="pagechange()"/>
            一共<%=pages.getTotalPage() %>,当前<%=pages.getCurrentPage() %></div>
    
    <script type="text/javascript">
        function pagechange(){
            
            var page = document.getElementById("page");
            
            if(page.value > <%=pages.getTotalPage() %> || page.value < 1 ){
                alert("请输入正确的页数!");
            }else{
                window.location.href="/text/textPage?page="+page.value;
            }
        }
    </script>

返回顶部

Mybatis的插站:
  1. 导入jar包
    jsplparser、pagehelper
  2. 在配置文件中配置
<plugins>
	<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugins>

  1. 直接使用类中的方法
    如果:典型的
PageHelper.startPage(当前页面数 , 显示条数);
PageInfo<T> pageInfo = new PageInfo<>( list  ,  需要显示的页码 );

返回顶部

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值