• servlet实现mysql数据库分页


    一、分页所需要的sql语句准备

    select * from table limit m,n
    其中m是指记录开始的index,从0开始,表示第一条记录
    n是指从第m+1条开始,取n条。

    例如:
    select * from tablename limit 2,4
    即取出第3条至第6条,4条记录

     第n页 每页x条 则用语句 limit (n-1)* x  ,x

    计算总共需要多少页: t表示总条  x表示每页显示多少条  总页数为:(t+x-1)/x

    二、具体实现

    1、dao层,接口实现

     1 package com.aaa.dao;
     2 
     3 import java.util.List;
     4 import java.util.Map;
     5 
     6 
     7 
     8 import java.util.List;
     9 import java.util.Map;
    10 
    11     /**
    12      * 分页查询
    13      */
    14 
    15     public interface IPageDAO {
    16 
    17         /**
    18          *
    19          *  第n页 每页x条 limit (n-1)* x  ,x
    20          *  t总共的条数  x一页显示多少count  总:(t+x-1)/x
    21          *
    22          */
    23 
    24         /**
    25          * 参数:页码,一页显示的条数
    26          * 返回值:List<Map<String, Object>
    27          */
    28 
    29         List<Map<String, Object>> getPage(int page, int count);
    30     }

    2、dao接口的实现类

     1 package com.aaa.dao.impl;
     2 
     3 import com.aaa.dao.IPageDAO;
     4 import com.aaa.util.DBUtil;
     5 
     6 import java.util.List;
     7 import java.util.Map;
     8 
     9 public class PageDAOImpl implements IPageDAO {
    10     @Override
    11     public List<Map<String, Object>> getPage(int page, int count) {
    12         
    13         //使用了拼接,将传过来的页码与每页显示的条数拼接在sql语句中
    14         String sql="select * from product  LIMIT  "+page+","+count;
    15         System.out.println(sql);
    16         return DBUtil.executeQuery(sql);
    17     }
    18 }

    3、servlet业务处理

     1 package com.aaa.servlet;
     2 
     3 import com.aaa.dao.IPageDAO;
     4 import com.aaa.dao.impl.PageDAOImpl;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.annotation.WebServlet;
     8 import javax.servlet.http.HttpServlet;
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11 import java.io.IOException;
    12 import java.util.List;
    13 import java.util.Map;
    14 
    15 @WebServlet("/page")
    16 public class PageServlet extends HttpServlet {
    17 
    18     @Override
    19     protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    20 
    21         //获取从前台页面穿过来 的页码数,如果需要传每个页面显示的条数,也可以参数接收
    22         String a = req.getParameter("a");
    23 
    24         //调用dao,查询数据
    25         IPageDAO dao=new PageDAOImpl();
    26         List<Map<String, Object>> page = dao.getPage(Integer.parseInt(a), 10);
    27 
    28         // 共享参数,将所有的商品信息共享
    29         req.setAttribute("allProduct",page);
    30 
    31         // 请求转发到 index.jsp 页面
    32         req.getRequestDispatcher("/views/index.jsp").forward(req,resp);
    33     }
    34 }

    4、jsp页面的分页设计

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+"views/";
    %>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
    
    <!DOCTYPE HTML>
    <html>
      <head>
     <style>
              .page{
                  text-align: center;
                  margin-top: 50px;
              }
              .page a{
                  text-decoration: none;
                  border:1px solid #f9d52b;
                  padding: 5px 7px;
                  color: #767675;
                  cursor: pointer;
              }
          </style>
      </head>
      
      <body>
         <%--分页部分--%>
        <div class="page">
                <span>上一页</span>
                <a href="/shop/page?a=1">1</a>
                <a href="/shop/page?a=2">2</a>
                <a href="/shop/page?a=3">3</a>
                <a href="/shop/page?a=4">4</a>
                <a href="/shop/page?a=5">5</a>
                <span>下一页</span>
            </div>
      </body>
    </html>
  • 相关阅读:
    Test_StringBuilder
    什么是朋友
    Uncharted4-Resource-Extract
    在使用 .NET Remoting 技术开发跨进程通信时Remoting找不到请求的服务--解决方法
    SourceTree 拉取github资源包时报错:fatal: unable to access 'https://github.com/xxx.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 --解决办法
    .net core3.1 文件导出报错The type initializer for 'Gdip' threw an exception 的解决方法
    .net core3.1文件下载之MimeTypeMapHelper
    .net core3.1 webapi项目部署在centos7中,通过supervisor来做进程守护遇到backoff Exited too quickly (process log may have details)的错误--并提供解决方法
    jenkins安装在ubuntu的解决方法-运维系列
    supervisord.conf配置文件详情
  • 原文地址:https://www.cnblogs.com/yanpingping/p/10780937.html
Copyright © 2020-2023  润新知