一、分页所需要的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层,接口实现

 package com.aaa.dao;

 import java.util.List;
import java.util.Map; import java.util.List;
import java.util.Map; /**
* 分页查询
*/ public interface IPageDAO { /**
*
* 第n页 每页x条 limit (n-1)* x ,x
* t总共的条数 x一页显示多少count 总:(t+x-1)/x
*
*/ /**
* 参数:页码,一页显示的条数
* 返回值:List<Map<String, Object>
*/ List<Map<String, Object>> getPage(int page, int count);
}

2、dao接口的实现类

 package com.aaa.dao.impl;

 import com.aaa.dao.IPageDAO;
import com.aaa.util.DBUtil; import java.util.List;
import java.util.Map; public class PageDAOImpl implements IPageDAO {
@Override
public List<Map<String, Object>> getPage(int page, int count) { //使用了拼接,将传过来的页码与每页显示的条数拼接在sql语句中
String sql="select * from product LIMIT "+page+","+count;
System.out.println(sql);
return DBUtil.executeQuery(sql);
}
}

3、servlet业务处理

 package com.aaa.servlet;

 import com.aaa.dao.IPageDAO;
import com.aaa.dao.impl.PageDAOImpl; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map; @WebServlet("/page")
public class PageServlet extends HttpServlet { @Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取从前台页面穿过来 的页码数,如果需要传每个页面显示的条数,也可以参数接收
String a = req.getParameter("a"); //调用dao,查询数据
IPageDAO dao=new PageDAOImpl();
List<Map<String, Object>> page = dao.getPage(Integer.parseInt(a), 10); // 共享参数,将所有的商品信息共享
req.setAttribute("allProduct",page); // 请求转发到 index.jsp 页面
req.getRequestDispatcher("/views/index.jsp").forward(req,resp);
}
}

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>

servlet实现mysql数据库分页的更多相关文章

  1. Statement和PreparedStatement的特点 MySQL数据库分页 存取大对象 批处理 获取数据库主键值

    1 Statement和PreparedStatement的特点   a)对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录   b)对于创建和 ...

  2. jsp-3 简单的servlet连接mysql数据库 使用mvc的登录注册

    简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ...

  3. oracle sqlserver mysql数据库分页

    1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM tabl ...

  4. jsp-2 简单的servlet连接mysql数据库 增删改查

    连接mysql数据库的操作 有增删改查 用的包有 commons-lang3-3.5 mysql-connector-java-5.1.40-bin 但是实际上也就是 数据查询和数据处理两种 所以对数 ...

  5. MySQL 数据库 分页查询

    在使用MySQL 进行数据库分页查询的时候最主要是使用LIMIT子句进行查询: 首先来看一下LIMIT: LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两 ...

  6. servlet连接mysql数据库和oracle数据库

    连接mysql数据库 package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.P ...

  7. html文件form表单action调用servlet连接mysql数据库实例

    web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...

  8. EntityFrameWork使用MySql数据库分页的BUG

    环境 使用MySQL Connector NET 6.7.4+EF5.0+VS2010 问题描述 IQueryable<T>类型的Where方法和Skip或Take方法一起使用时,生成的S ...

  9. mysql数据库分页查询优化

    原博:MySQL单表百万数据记录分页性能优化 limit优化 当数据很多需要进行分页查询时:需要先查出第一条数据的id然后根据id查询大于id的数据 limt 一页的数据量 1.   直接用limit ...

随机推荐

  1. 使用xheditor时 cloneRange错误 ext.net

    使用ext.net 加  xheditor时,一直报 cloneRange错误. 于是 按照说明但独使用xheditor  ,检查无错,正常使用, 因此排除版本问题. <ext:panel ru ...

  2. vscode setting

    { "files.autoSave": "onFocusChange", "window.openFilesInNewWindow": tr ...

  3. 树莓派中学TensorFlow

    树莓派中默认的虚拟环境为python 2.x,需要用下面的-p参数修改为python3环境.电信wifi和公司网络直接用pip3 install TensorFlow都不好使,用联通手机热点可以安装. ...

  4. iOS 12 tabbar 从二级页面返回时,出现跳动解决办法

    APP push一个界面,返回的时候,tabBar上的图标和文字出现一个从上往下的神奇动画 经过测试发现,如果使用系统OS12.1 UINavigationController + UITabBarC ...

  5. 关于Spring的Quartz定时器设定

    在实际的开发业务中经常会遇到定时执行某个任务,如果项目使用的ssh框架的话,就需要配合spring来使用定时器.spring的定时器是一个固定的配置格式,具体的applicationContext配置 ...

  6. HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  7. POJ3094 Quicksum

    POJ3094 Quicksum Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18517   Accepted: 1271 ...

  8. Java——IO流 对象的序列化和反序列化流ObjectOutputStream和ObjectInputStream

    对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息. 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流:  Ob ...

  9. 关于Hibernate和Strtus2的xml提示问题

    话不多说,上图 1.Windom 2.preferences 3.搜索框搜索xml catalog 点击Add 4.导入约束(具体操作图上1.2.3)

  10. 《2018面向对象程序设计(Java)课程学习进度条》

    周次 (阅读/编写)代码行数 发布博客量/博客评论数量 课堂/课余学习时间(小时) 最满意的编程任务 第一周 50/40 1/0 6/4 九九乘法表 第二周 100/80 1/0 6/8 实验5,6, ...