servlet实现mysql数据库分页
2024-09-21 03:02:42
一、分页所需要的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>
最新文章
- Java页面中文编码要转换两次encodeURI
- 用U3D寻找看电视的感觉!!
- Inside Flask - json 处理
- ubuntu下python连接mysql
- php获取远程文件大小
- C#4.0新特性:可选参数,命名参数,Dynamic
- uLua学习笔记(三):Unity3D和Lua之间的相互调用
- Qt源码分析之QPointer
- jquery 事件委托三种事件绑定方式.bind(),.live(),.delegate()
- hdu4507
- MFC消息响应机制分析
- Provably Delay Efficient Data Retrieving in Storage Clouds---INFOCOM 2015
- grub2与grub区别
- vxWorks内核实现基本原理
- 面试之路(3)-详解MVC,MVP,MVVM
- 调用链Cat介绍
- Docker生态会重蹈Hadoop的覆辙吗?
- visual studio属性管理器
- 使用MongoDB数据库(2)(三十六)
- Visual Studio生成webservice代理类
热门文章
- Vmware虚拟中克隆主机没IP地址?怎么解决?
- 同一主机设置多个密钥与不同github账号关联,或同一主机同一密钥分别关联github和gitlab
- window7 修改docker安装的machine 位置
- docker-compose hello word
- linux 安装中文支持
- (转)SQLServer_十步优化SQL Server中的数据访问 三
- C#windows桌面应用小程序制作——大文件数据分段解析存储
- Java ---- 遍历链表(递归与非递归实现)
- C#导出Excel后关闭进程EXCEL.EXE
- 数组Array的API2