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层,接口实现
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数据库分页的更多相关文章
- Statement和PreparedStatement的特点 MySQL数据库分页 存取大对象 批处理 获取数据库主键值
1 Statement和PreparedStatement的特点 a)对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录 b)对于创建和 ...
- 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 ...
- oracle sqlserver mysql数据库分页
1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM tabl ...
- jsp-2 简单的servlet连接mysql数据库 增删改查
连接mysql数据库的操作 有增删改查 用的包有 commons-lang3-3.5 mysql-connector-java-5.1.40-bin 但是实际上也就是 数据查询和数据处理两种 所以对数 ...
- MySQL 数据库 分页查询
在使用MySQL 进行数据库分页查询的时候最主要是使用LIMIT子句进行查询: 首先来看一下LIMIT: LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两 ...
- servlet连接mysql数据库和oracle数据库
连接mysql数据库 package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.P ...
- html文件form表单action调用servlet连接mysql数据库实例
web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...
- EntityFrameWork使用MySql数据库分页的BUG
环境 使用MySQL Connector NET 6.7.4+EF5.0+VS2010 问题描述 IQueryable<T>类型的Where方法和Skip或Take方法一起使用时,生成的S ...
- mysql数据库分页查询优化
原博:MySQL单表百万数据记录分页性能优化 limit优化 当数据很多需要进行分页查询时:需要先查出第一条数据的id然后根据id查询大于id的数据 limt 一页的数据量 1. 直接用limit ...
随机推荐
- 使用xheditor时 cloneRange错误 ext.net
使用ext.net 加 xheditor时,一直报 cloneRange错误. 于是 按照说明但独使用xheditor ,检查无错,正常使用, 因此排除版本问题. <ext:panel ru ...
- vscode setting
{ "files.autoSave": "onFocusChange", "window.openFilesInNewWindow": tr ...
- 树莓派中学TensorFlow
树莓派中默认的虚拟环境为python 2.x,需要用下面的-p参数修改为python3环境.电信wifi和公司网络直接用pip3 install TensorFlow都不好使,用联通手机热点可以安装. ...
- iOS 12 tabbar 从二级页面返回时,出现跳动解决办法
APP push一个界面,返回的时候,tabBar上的图标和文字出现一个从上往下的神奇动画 经过测试发现,如果使用系统OS12.1 UINavigationController + UITabBarC ...
- 关于Spring的Quartz定时器设定
在实际的开发业务中经常会遇到定时执行某个任务,如果项目使用的ssh框架的话,就需要配合spring来使用定时器.spring的定时器是一个固定的配置格式,具体的applicationContext配置 ...
- HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- POJ3094 Quicksum
POJ3094 Quicksum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18517 Accepted: 1271 ...
- Java——IO流 对象的序列化和反序列化流ObjectOutputStream和ObjectInputStream
对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息. 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流: Ob ...
- 关于Hibernate和Strtus2的xml提示问题
话不多说,上图 1.Windom 2.preferences 3.搜索框搜索xml catalog 点击Add 4.导入约束(具体操作图上1.2.3)
- 《2018面向对象程序设计(Java)课程学习进度条》
周次 (阅读/编写)代码行数 发布博客量/博客评论数量 课堂/课余学习时间(小时) 最满意的编程任务 第一周 50/40 1/0 6/4 九九乘法表 第二周 100/80 1/0 6/8 实验5,6, ...