这个是基于MVC框架写的。

首先对数据库进行封装处理

public class DataBase {
static String driver = "com.mysql.jdbc.Driver";
static String url = "jdbc:mysql://127.0.0.1:3306/xscjgl2?useUnicode=true&characterEncoding=utf8";
static String user = "root";
static String password = "root";
static String maxsql = null;
static Connection con = null;
static int tt ;
static Statement sta = null;
static ResultSet res = null;
//连接数据库
static public Connection lianjie(){
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
//查询
public ResultSet sel(String sql){
con = lianjie();
try {
sta = con.createStatement();
res = sta.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return res;
}

数据库的数据

dao层处理

在dao层里定义分页的方法

package com.dao;

import java.util.List;

import com.model.Page;

public interface Fy {
//计算出Page属性的值
Page page();
//按照分页查询全部
List selectAll(int offsetone,int slide);

}

daoImpl实现层里处理数据库得到的数据

package com.dao.iml;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.dao.Fy;
import com.database.DBcon01;
import com.model.Page;
import com.model.Student;

public class FyImpl implements Fy {
DBcon01 db = new DBcon01();

@Override
// 可以查到总条数,根据总条数和每页显示计算出总页数(总条数+每页显示数-1)/每页显示数
public Page page() {
Page p = null;
// 查询总条数
String sql = "select COUNT(*) from student";
ResultSet res = db.sel(sql) ; //sel是DataBase.java的一个方法
// 定义总页数
int pc = 0;
// 定义总条数
int z = 0;
try {
while (res.next()) {
p = new Page();
z = res.getInt(1);
p.setCount(z);
}
// 计算出总页数
pc = (z + p.getSlide() - 1) / p.getSlide();
p.setPageCount(pc);
/*
* //判断如果有余数,那么总页数+1 if(z%p.getSlide()==0){ pc =z/p.getSlide();
* }else{ pc =z/p.getSlide()+1; }
*/


} catch (SQLException e) {
e.printStackTrace();
}
return p;
}
@Override
//得到每页要显示的数据
public List selectAll(int offsetone, int slide) {
List list = new ArrayList();
Student stu = null;
/* //select字段列表 from数据源 limit [start,]length;
start表示从第几行记录开始检索,length表示检索多少行记录。表中第一行记录的start值为0*/

//查询某几行记录
String sql = "select * from student limit " + offsetone + "," + slide
+ "";
ResultSet res = db.sel(sql);
try {
while (res.next()) {
int id = res.getInt(1);
String stuName = res.getString(2);
String stuSex = res.getString(3);
String stuAge = res.getString(4);
//通过有参的构造方法创建Student对象
stu = new Student(id, stuName, stuSex, stuAge);
//把Student对象增加到list集合
list.add(stu);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return list;
}

}

service层处理

在service层里,这个比较简单,service层只是跳转一下。

package com.service;

import java.util.List;

import com.model.Page;

public interface FyService {
//计算出Page属性的值
Page page();
//按照分页查询全部
List selectAll(int offsetone,int slide);
}

在serviceImpl层的实现层里

package com.service.impl;

import java.util.List;

import com.dao.Fy;
import com.dao.iml.FyImpl;
import com.model.Page;
import com.service.FyService;

public class FyServiceImpl implements FyService{
Fy f = new FyImpl();
@Override
public Page page() {
return f.page();
}
@Override
public List selectAll(int offsetone, int slide) {
return f.selectAll(offsetone, slide);
}
}

在servlet里

package com.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.model.Page;
import com.model.Student;
import com.service.FyService;
import com.service.impl.FyServiceImpl;

public class FyServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//从页面获取pagenow
int pagenow = Integer.parseInt(request.getParameter("pagenow"));

FyService fs = new FyServiceImpl();
Page page =fs.page();
//通过pagenow计算出offsetone
page.setOffsetone((pagenow-1)*page.getSlide());
//通过调取FyServiceImpl中的selectAll(page.getOffsetone(), page.getSlide()),返回每页查询的数据集合
List<Student> list= fs.selectAll(page.getOffsetone(), page.getSlide());

request.setAttribute("list", list);
request.getSession().setAttribute("page1", page);
request.getRequestDispatcher("/fy/StuAll.jsp").forward(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


}

}

在model层里写一个Page的类

package com.model;

/*
* @封装分页的共同属性
*
*/


public class Page {

private int count;//得到数据的总条数
private int slide=4; //每页显示的4条
private int offsetone;//每页的第一条
private int pageCount;// 总页数
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getSlide() {
return slide;
}
public void setSlide(int slide) {
this.slide = slide;
}
public int getOffsetone() {
return offsetone;
}
public void setOffsetone(int offsetone) {
this.offsetone = offsetone;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}

显示的界面

写一个跳转的界面

pagenow给servlet传一个页面参数

 <body>
<a href="Paging?pagenow=1">查找所有</a>
</body>

显示数据的StuAll.jsp页面

//导入JSTL标签
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<body>
<%
List list = (List) request.getAttribute("list");
int size = list.size();
%>


<c:choose>
<c:when test="<%=size == 0%>">
对不起,您没有查到数据。。。。。

</c:when>
<c:otherwise>
<table>
<tr>
<td>学号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>修改</td>
<td>删除</td>
</tr>
<c:forEach items="${list}" var="list1">
<tr>
<td>${list1.stuId}</td>
<td>${list1.stuName}</td>
<td>${list1.stuSex}</td>
<td>${list1.stuAge}</td>
<td><a href="">修改</a></td>
<td><a href="">删除</a></td>
</tr>
</c:forEach>
</table>
<br>
<br>


</c:otherwise>
</c:choose>

<ul class="pagination pagination-lg">

<%
int offset = new Integer(request.getParameter("pagenow"));
Page pb = (Page) session.getAttribute("page1");

out.println("<li ><a href=FyServlet?pagenow=1" + ">首页</a></li>");
%>

<%
if (offset > 1) {
out.println("<li ><a href=FyServlet?pagenow=" + (offset - 1)
+ ">&laquo;</a></li>");
} else {
out.println("<li class='disabled'><a>&laquo;</a></li>");
}
%>

<%
for (int i = 1; i <= pb.getPageCount(); i++) {
out.print("<li><a href=FyServlet?pagenow=" + i + ">-" + i
+ "-</a></li>");

}
%>

<%
if (offset < pb.getPageCount()) {
out.println("<li><a href=FyServlet?pagenow=" + (offset + 1)
+ ">&raquo</a></li>");
} else {
out.println("<li class='disabled'><a>&raquo</a></li>");
}
%>

<%
out.println("<li><a href=FyServlet?pagenow=" + pb.getPageCount()
+ ">尾页</a></li>");
%>

</ul>
</body>

更多相关文章

  1. MySQL官网示例数据库emploees分析使用
  2. mysql(workbench)更新数据时候的一个异常
  3. mysql启动脚本——指定数据目录并指定配置文件
  4. mysql中在表中insert数据时,有重复主键id时,变成update
  5. MySQL在保存数据时添加时间戳
  6. mysql——数据库设计中int与varchar中的长度含义
  7. java链接数据库--Mysql
  8. 数据库_MySQL_复杂SQL的书写顺序与执行过程
  9. mysql dos命令 创建表单,选择数据库

随机推荐

  1. K8s 平台可以如何处理 Pod 预授权问题
  2. 学习C的第三天-while语句
  3. 一篇文章看明白 Android(安卓)Service 启
  4. 【安卓】Content Provider 基础
  5. 一看就懂【来自英雄联盟盖伦的怒吼】与 P
  6. libp2p-rs kad 使用及调试方法
  7. 一看就懂,Python 日志模块详解及应用
  8. Python排序算法[二]:测试数据的迷雾散去
  9. 你还在用 os.path?快来感受一下 pathlib
  10. Python 系统资源信息获取工具,你用过没?