博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL---数据库从入门走向大神系列(十六)-JavaWeb分页技术实例演示1
阅读量:7204 次
发布时间:2019-06-29

本文共 8311 字,大约阅读时间需要 27 分钟。

分页,是一种将所有数据分段展示给用户的技术.用户每次看到的不 是全部数据,而是其中的一部分,如果在其中没有找到自己想要的内容,用户可以通过指定页码或是点上/下一页的方式进行翻页。

本例演示静态分页,也就是先设置好每页显示10行,再根据总行数,来算出总页数,将所有页数的页号都显示出来。

相关算法(技术):

总行数(num): select count(1) from stud;每页显示的行数(n): 固定值---已知的一个常量页数: pageSize= num/n +( (num%n==0)?0:1 )当前页号: currentPage当前要显示的页面数据的起始行号和终止行号startN: (currentPage-1)*pageSize如何显示从startN开始的pageSize条记录select * from stud limit startN, pageSize;

像这样:

点击哪一页就显示哪一页的内容。

数据库数据:

数据库的表和数据在这一篇博客中已经准备好了:

create table person(    id varchar(30) primary key,    name varchar(30),    address varchar(30),    age int);

DAO层:

接口:

package cn.hncu.dao;import java.sql.SQLException;import java.util.Map;public interface IPageDAO {
public Map
query(Integer pageNo) throws NumberFormatException, SQLException;}

实现类:

package cn.hncu.dao;import java.sql.SQLException;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.MapListHandler;import org.apache.commons.dbutils.handlers.ScalarHandler;import org.junit.Test;import cn.hncu.pubs.C3p0Pool;public class PageJdbc implements IPageDAO {
//每页显示的行数 private final int pageSize = 10; @Override public Map
query(Integer pageNo) throws NumberFormatException, SQLException { Map
result = new HashMap
(); //获取总页数 pageCount = rows/pageSize + ((rows%pageSize==0)?0:1) //总行数 rows String sql = "select count(1) from person"; QueryRunner run = new QueryRunner(C3p0Pool.getDataSource()); int rows =Integer.parseInt(""+run.query(sql, new ScalarHandler())); //总页数 int pageCount = rows/pageSize + ((rows%pageSize==0)?0:1); result.put("pageCount", pageCount); //分页后的当前页面内容datas //起始行号 int startN = (pageNo-1)*pageSize; sql = "select * from person limit "+startN+" , "+pageSize; List
> datas = run.query(sql, new MapListHandler()); result.put("datas", datas);//封装到result return result; } @Test public void test() { try { Map
map = query(5); System.out.println(map); } catch (NumberFormatException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }}

C3p0配置文件c3p0-config.xml:

com.mysql.jdbc.Driver
root
1234
2
30
10
2
50
com.mysql.jdbc.Driver
root
1234
5
100
50
1000
0
5

C3p0数据库连接池:

package cn.hncu.pubs;import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class C3p0Pool {
private static DataSource pool; private static ThreadLocal
t = new ThreadLocal
(); static{ pool = new ComboPooledDataSource(); } public static DataSource getDataSource(){ return pool; } public static Connection getConnection() throws SQLException{ Connection con=t.get(); if(con==null){ con = pool.getConnection(); t.set(con); } return con; }}

service层:

接口:

package cn.hncu.service;import java.sql.SQLException;import java.util.Map;public interface IPageService {
public Map
query(Integer pageNo) throws NumberFormatException, SQLException;}

实现类

package cn.hncu.service;import java.sql.SQLException;import java.util.Map;import cn.hncu.dao.IPageDAO;import cn.hncu.dao.PageJdbc;public class PageServiceImpl implements IPageService{
//注入dao IPageDAO dao = new PageJdbc(); @Override public Map
query(Integer pageNo) throws NumberFormatException, SQLException { return dao.query(pageNo); }}

index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>          

show.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>      演示数据分页显示    

当前页的内容:

学号 姓名
${map.id} ${map.name}
上一页
  
${idx}
${idx}
  
下一页

table.css:

body{    text-align: center;}table{    border: 1px solid blue;    width: 500px;    border-collapse: collapse;/*为表格设置合并边框模型:*/    margin: auto;}td,th,tr{    border:  1px solid blue;}.pc{    width: 30px;    height: 30px;    border: 1px solid #e1e2e3;    border-top-color: rgb(225, 226, 227);    border-top-style: solid;    border-top-width: 1px;    border-right-color: rgb(225, 226, 227);    border-right-style: solid;    border-right-width: 1px;    border-bottom-color: rgb(225, 226, 227);    border-bottom-style: solid;    border-bottom-width: 1px;    border-left-color: rgb(225, 226, 227);    border-left-style: solid;    border-left-width: 1px;}.now {    display: block;}

web.xml:

PageServlet
cn.hncu.servlet.PageServlet
PageServlet
/PageServlet
index.jsp

PageServlet.java:

package cn.hncu.servlet;import java.io.IOException;import java.sql.SQLException;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.hncu.service.IPageService;import cn.hncu.service.PageServiceImpl;public class PageServlet extends HttpServlet {
//注入service IPageService service = new PageServiceImpl(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String pageNo = request.getParameter("page"); if(pageNo==null || pageNo.trim().length()<=0){ pageNo="1"; } Integer iPageNo=1; try { iPageNo = Integer.parseInt(pageNo); } catch (NumberFormatException e) { iPageNo=1; } try { Map
result = service.query(iPageNo); //给结果集补一个数据:currentPage result.put("currentPage", iPageNo); //###注意,一定要把结果集放入容器中 request.setAttribute("result", result); //转到结果页面 request.getRequestDispatcher("/jsps/show.jsp").forward(request, response); } catch (NumberFormatException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }}

演示结果:

需要的第三方扩展包:

链接:

完整项目代码链接:

转载请附上原文博客链接:

你可能感兴趣的文章
Codeforces Round #390 (Div. 2) E(bitset优化)
查看>>
基于HTML5的WebGL呈现A星算法3D可视化
查看>>
微软原版 windows server 2003 sp2 R2 系列下载分享
查看>>
Docker系列09—Docker的系统资源限制及验证
查看>>
[转]DPM2012系列之十四:备份SQL server 2008R2数据库
查看>>
pip的安装、以及使用方法。
查看>>
ajax submit - jquery
查看>>
hadoop权威指南学习(一) - 天气预报MapReduce程序的开发和部署
查看>>
C# CultureInfo中常用的InvariantCulture
查看>>
跟KingDZ学HTML5系列:文章索引
查看>>
B10-git的简单使用
查看>>
交互式的Flash图表和仪表控件AnyChart
查看>>
论Sava(),SaveOrUpdate(),Merge()区别
查看>>
[MIP]mip-script组件自定义 JS 代码使用限制
查看>>
wcf的部署
查看>>
预定义宏,C语言预定义的宏详解
查看>>
es 剩余磁盘空间达到es最小值,添加数据被block
查看>>
2012年5大创新预测:软件改变世界
查看>>
[转]和机器学习和计算机视觉相关的数学
查看>>
CCNP第一天 Rip综合实验
查看>>