Java中的学生管理种类分页功用

图片 1标题图

第83节:Java中的学生管理系统分页功能

分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页。这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其特点是对内存中数据量存储不大,只是缺点就是要对数据库不断的进行访问;而对逻辑分页来说,就有所不同,它是一下子就把所有的数据全部查询出来,然后放入到内存中,访问速度快,缺点就是对内存空间不足,数据量过大。

select * from stu limit 5;

图片 2效果

// offset 偏移前面的多少条,offset 1 跳过前面的一条select * from stu limit 5 offset 5;

图片 3效果

SELECT * FROM stu LIMIT 5 , 5;

图片 4效果

SELECT * FROM stu LIMIT 5 , 2;

SELECT * FROM stu LIMIT 2 , 5;

图片 5效果

写分页的dao模式

// index.jsp<h3><a href="StudentListPageServlet?currentPage=1">分页显示所有学生</a></h3>

// StudentListPageServlet//1. 获取需要显示的页码数int currentPage =Integer.parseInt( request.getParameter("currentPage"));

// StudentDao// 接口中定义的成员都是常量// 一页显示多少条记录int PAGE_SIZE = 5;// 分页dao,查询当页的学生数据List<Student> findStudentByPage(int currentPage) throws SQLException;

图片 6效果

// StudentDaoImpl @Override public List<Student> findStudentByPage(int currentPage) throws SQLException { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource; // 第一个问号,一页返回多少条记录,第二个问号,跳过前面的多少条记录 //5 0 --- 第一页 *5 //5 5 --- 第二页 *5 //5 10 --- 第三页 return runner.query("select * from stu limit ? offset ?", new BeanListHandler<Student>(Student.class),PAGE_SIZE , (currentPage-1)*PAGE_SIZE); }

业务逻辑

select count from stu;

图片 7效果

业务逻辑

package com.dashucoding.servlet;import java.io.IOException;import java.sql.SQLException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dashucoding.domain.PageBean;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;/** * 这是用于分页显示学生列表的servlet */public class StudentListPageServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //1. 获取需要显示的页码数 int currentPage =Integer.parseInt( request.getParameter("currentPage")); //2. 根据指定的页数,去获取该页的数据回来 //List<Student> --- list.jsp StudentService service = new StudentServiceImpl(); PageBean pageBean= service.findStudentByPage(currentPage); request.setAttribute("pageBean", pageBean); //3. 跳转界面。 request.getRequestDispatcher("list_page.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

去业务逻辑去找

package com.dashucoding.service;import java.sql.SQLException;import java.util.List;import com.dashucoding.domain.PageBean;import com.dashucoding.domain.Student;/* * 这是学生的业务处理规范 * */public interface StudentService { // 分页dao,查询当页的学生数据 // 分页的很多小逻辑业务 可以做到service里面 // 业务做到service里面,做的就是bean了,当前页,总页数,显示条数, 总记录数 // 返回的是一个bean了 // 返回的是PageBean里面的所有数据了 PageBean findStudentByPage(int currentPage) throws SQLException; // 根据姓名或性别,查询 List<Student> searchStudent(String sname, String sgender) throws SQLException; /* * 查询所有学生 list<Student> */ List<Student> findAll() throws SQLException; void insert(Student student) throws SQLException; // sid根据id删除学生 void delete throws SQLException; // 根据id查询单个学生对象 Student findStudentById throws SQLException; // 更新学生信息 void update(Student student) throws SQLException;}

package com.dashucoding.service.impl;import java.sql.SQLException;import java.util.List;import com.dashucoding.dao.StudentDao;import com.dashucoding.dao.impl.StudentDaoImpl;import com.dashucoding.domain.PageBean;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;/* * 这是学生业务实现 * */public class StudentServiceImpl implements StudentService { @Override public List<Student> findAll() throws SQLException { StudentDao dao = new StudentDaoImpl(); return dao.findAll(); } @Override public void insert(Student student) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.insert; } @Override public void delete throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.delete; } @Override public Student findStudentById throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); return dao.findStudentById; } @Override public void update(Student student) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.update; } @Override public List<Student> searchStudent(String sname, String sgender) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); return dao.searchStudent(sname, sgender); } @Override public PageBean findStudentByPage(int currentPage) throws SQLException { // TODO Auto-generated method stub // 封装分页的该页的数据 PageBean<Student> pageBean = new PageBean<Student>(); int pageSize = StudentDao.PAGE_SIZE; // 设置当前页 pageBean.setCurrentPage(currentPage); // 每条记录 pageBean.setPageSize; StudentDao dao = new StudentDaoImpl(); List<Student> list = dao.findStudentByPage(currentPage); pageBean.setList; // 总记录数,总页数 int count = dao.findCount(); pageBean.setTotalSize; // 总页数 pageBean.setTotalPage(count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1); return null; }}

// 封装的数据package com.dashucoding.domain;import java.util.List;// 一个用于封装了分页的数据// 有: 当前学生集合数据,总的记录数,总的页数,当前页,每页的显示记录数public class PageBean<T> { private int currentPage; // 当前页 private int totalPage;// 总页数 private int pageSize;// 每页的记录数,每页要显示多少记录 private int totalSize; // 总的记录数 private List<T> list; // 当前页的学生集合 public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalSize() { return totalSize; } public void setTotalSize(int totalSize) { this.totalSize = totalSize; } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } }

图片 8效果

最后就靠显示页面逻辑

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>学生列表页面</title><script type="text/javascript"> function doDelete { /* 如果这里弹出的对话框,用户点击的是确定,就马上去请求Servlet。 如何知道用户点击的是确定。 如何在js的方法中请求servlet。 */ var flag = confirm("是否确定删除?"); if{ //表明点了确定。 访问servlet。 在当前标签页上打开 超链接, //window.location.href="DeleteServlet?sDeleteServlet?sSearchStudentServlet" method="post"> <table border="1" width="700"> <tr > <td colspan="8"> 按姓名查询:<input type="text" name="sname"/> &nbsp; 按性别查询:<select name="sgender"> <option value="">--请选择-- <option value="男">男 <option value="女">女 </select> &nbsp;&nbsp;&nbsp; <input type="submit" value="查询"> &nbsp;&nbsp;&nbsp; <a href="add.jsp">添加</a> </td> </tr> <tr align="center"> <td>编号</td> <td>姓名</td> <td>性别</td> <td>电话</td> <td>生日</td> <td>爱好</td> <td>简介</td> <td>操作</td> </tr> <c:forEach items="${pageBean.list }" var="stu"> <tr align="center"> <td>${stu.sid }</td> <td>${stu.sname }</td> <td>${stu.gender }</td> <td>${stu.phone }</td> <td>${stu.birthday }</td> <td>${stu.hobby }</td> <td>${stu.info }</td> <td><a href="EditServlet?sid=${stu.sid }">更新</a> <a href="#" onclick="doDelete(${stu.sid})">删除</a></td> </tr> </c:forEach> <tr> <td colspan="8"> 第 ${pageBean.currentPage } / ${pageBean.totalPage } &nbsp;&nbsp; 每页显示${pageBean.pageSize }条 &nbsp;&nbsp;&nbsp; 总的记录数${pageBean.totalSize } &nbsp;&nbsp;&nbsp; <c:if test="${pageBean.currentPage !=1 }"> <a href="StudentListPageServlet?currentPage=1">首页</a> | <a href="StudentListPageServlet?currentPage=${pageBean.currentPage-1 }">上一页</a> </c:if> <c:forEach begin="1" end="${pageBean.totalPage }" var="i"> <c:if test="${pageBean.currentPage == i }"> ${i } </c:if> <c:if test="${pageBean.currentPage != i }"> <a href="StudentListPageServlet?currentPage=${i }">${i }</a> </c:if> </c:forEach> <c:if test="${pageBean.currentPage !=pageBean.totalPage }"> <a href="StudentListPageServlet?currentPage=${pageBean.currentPage+1 }">下一页</a> | <a href="StudentListPageServlet?currentPage=${pageBean.totalPage }">尾页</a> </c:if> </td> </tr> </table> </form></body></html>

图片 9项目结构

我的源码

package com.dashucoding.dao;import java.sql.SQLException;import java.util.List;import com.dashucoding.domain.Student;/* * 这是针对学生表的数据访问 * * */public interface StudentDao { // 接口中定义的成员都是常量 // 一页显示多少条记录 int PAGE_SIZE = 5; // 分页dao,查询当页的学生数据 List<Student> findStudentByPage(int currentPage) throws SQLException; // 根据姓名或性别,查询 List<Student> searchStudent(String sname, String sgender) throws SQLException; /* * 查询所有学生 list<Student> */ List<Student> findAll() throws SQLException; void insert(Student student) throws SQLException; // sid根据id删除学生 void delete throws SQLException; // 根据id查询单个学生对象 Student findStudentById throws SQLException; // 更新学生信息 void update(Student student) throws SQLException; // 查询总的学生记录数 int findCount() throws SQLException;}

package com.dashucoding.dao.impl;import java.sql.Connection;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbutils.handlers.BeanListHandler;import org.apache.commons.dbutils.handlers.ScalarHandler;import com.dashucoding.dao.StudentDao;import com.dashucoding.domain.Student;import com.dashucoding.util.JDBCUtil02;import com.dashucoding.util.TextUtils;/* *这是StudentDao的实现,针对前面定义的规范,做出具体的实现 * */public class StudentDaoImpl implements StudentDao { /* * 查询所有学生 */ @Override public List<Student> findAll() throws SQLException { QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource; return runner.query("select * from stu", new BeanListHandler<Student>(Student.class)); } @Override public void insert(Student student) throws SQLException { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource; runner.update("insert into stu values(null, ?,?,?,?,?,?)", student.getSname(), student.getGender(), student.getPhone(), student.getBirthday(), student.getHobby(), student.getInfo; } @Override public void delete throws SQLException { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource; runner.update("delete from stu where sid=?", sid); } @Override public Student findStudentById throws SQLException { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource; return runner.query("select * from stu where sid = ?", new BeanHandler<Student>(Student.class), sid); } @Override public void update(Student student) throws SQLException { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource; runner.update("update stu set sname=?, gender=?, phone=?, birthday=?, hobby=?, info=? where sid=?", student.getSname(), student.getGender(), student.getPhone(), student.getBirthday(), student.getHobby(), student.getInfo(), student.getSid; } // 模糊查询 @Override public List<Student> searchStudent(String sname, String sgender) throws SQLException { // TODO Auto-generated method stub /*System.out.println(sname + sgender);*/ QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource; /* * String sql = "select * from stu where sname=? or sgender=?"; * select * from stu where sname like ?; * select * from stu where gender = ?; * select * from stu where sname like ? and gender = ?; * 如果两个都没有就查询所有 * sql = "select * from stu" * if{ * sql = sql + "where sname like ?"; * } * if{ * sql = sql + "where gender = ?"; * } * * String sql = "select * from stu where 1=1"; * if{ * sql = sql + " and sname like ? "; * } * if{ * sql = sql + " and gender = ? "; * } * */ String sql = "select * from stu where 1=1"; List<String> list = new ArrayList<String>(); if(!TextUtils.isEmpty { sql = sql + " and sname like ? "; list.add("%"+sname+"%"); } if(!TextUtils.isEmpty { sql = sql + " and gender = ? "; list.add; } /*list.toArray()*/ return runner.query(sql, new BeanListHandler<Student>(Student.class),list.toArray; } @Override public List<Student> findStudentByPage(int currentPage) throws SQLException { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource; // 第一个问号,一页返回多少条记录,第二个问号,跳过前面的多少条记录 //5 0 --- 第一页 *5 //5 5 --- 第二页 *5 //5 10 --- 第三页 return runner.query("select * from stu limit ? offset ?", new BeanListHandler<Student>(Student.class),PAGE_SIZE , (currentPage-1)*PAGE_SIZE); } // 查询总的记录数 @Override public int findCount() throws SQLException { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource; // 用于处理平均值,总的个数 Long result =  runner.query("select count from stu", new ScalarHandler; return result.intValue(); }}

package com.dashucoding.domain;import java.util.List;// 一个用于封装了分页的数据// 有: 当前学生集合数据,总的记录数,总的页数,当前页,每页的显示记录数public class PageBean<T> { private int currentPage; // 当前页 private int totalPage;// 总页数 private int pageSize;// 每页的记录数,每页要显示多少记录 private int totalSize; // 总的记录数 private List<T> list; // 当前页的学生集合 public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalSize() { return totalSize; } public void setTotalSize(int totalSize) { this.totalSize = totalSize; } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } }

package com.dashucoding.domain;import java.util.Date;/* * 这是学生封装的对象bean * * */public class Student { private int sid; private String sname; private String gender; private String phone; private String hobby; private String info; private Date birthday; public Student() { super(); // TODO Auto-generated constructor stub } public Student(int sid, String sname, String gender, String phone, String hobby, String info, Date birthday) { super(); this.sid = sid; this.sname = sname; this.gender = gender; this.phone = phone; this.hobby = hobby; this.info = info; this.birthday = birthday; } public Student(String sname, String gender, String phone, String hobby, String info, Date birthday) { super(); this.sname = sname; this.gender = gender; this.phone = phone; this.hobby = hobby; this.info = info; this.birthday = birthday; } public int getSid() { return sid; } public void setSid { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "Student [s, sname=" + sname + ", gender=" + gender + ", phone=" + phone + ", hobby=" + hobby + ", info=" + info + ", birthday=" + birthday + "]"; } }

package com.dashucoding.service;import java.sql.SQLException;import java.util.List;import com.dashucoding.domain.PageBean;import com.dashucoding.domain.Student;/* * 这是学生的业务处理规范 * */public interface StudentService { // 分页dao,查询当页的学生数据 // 分页的很多小逻辑业务 可以做到service里面 // 业务做到service里面,做的就是bean了,当前页,总页数,显示条数, 总记录数 // 返回的是一个bean了 // 返回的是PageBean里面的所有数据了 PageBean findStudentByPage(int currentPage) throws SQLException; // 根据姓名或性别,查询 List<Student> searchStudent(String sname, String sgender) throws SQLException; /* * 查询所有学生 list<Student> */ List<Student> findAll() throws SQLException; void insert(Student student) throws SQLException; // sid根据id删除学生 void delete throws SQLException; // 根据id查询单个学生对象 Student findStudentById throws SQLException; // 更新学生信息 void update(Student student) throws SQLException;}

package com.dashucoding.service.impl;import java.sql.SQLException;import java.util.List;import com.dashucoding.dao.StudentDao;import com.dashucoding.dao.impl.StudentDaoImpl;import com.dashucoding.domain.PageBean;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;/* * 这是学生业务实现 * */public class StudentServiceImpl implements StudentService { @Override public List<Student> findAll() throws SQLException { StudentDao dao = new StudentDaoImpl(); return dao.findAll(); } @Override public void insert(Student student) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.insert; } @Override public void delete throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.delete; } @Override public Student findStudentById throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); return dao.findStudentById; } @Override public void update(Student student) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.update; } @Override public List<Student> searchStudent(String sname, String sgender) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); return dao.searchStudent(sname, sgender); } @Override public PageBean findStudentByPage(int currentPage) throws SQLException { // TODO Auto-generated method stub // 封装分页的该页的数据 PageBean<Student> pageBean = new PageBean<Student>(); int pageSize = StudentDao.PAGE_SIZE; // 设置当前页 pageBean.setCurrentPage(currentPage); // 每条记录 pageBean.setPageSize; StudentDao dao = new StudentDaoImpl(); List<Student> list = dao.findStudentByPage(currentPage); pageBean.setList; // 总记录数,总页数 int count = dao.findCount(); pageBean.setTotalSize; // 总页数 pageBean.setTotalPage(count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1); return null; }}

package com.dashucoding.servlet;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;/** * 用于处理学生的添加请求 */public class AddServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding; try { // 1. 获取客户端提交上来的数据 String sname = request.getParameter; String gender = request.getParameter; String phone = request.getParameter; String birthday = request.getParameter("birthday"); String info = request.getParameter; // String hobby = request.getParameter;//hobby : 游泳,写字, 足球。 String[] h = request.getParameterValues; String hobby = Arrays.toString; hobby = hobby.substring(1, hobby.length; // 2. 添加到数据库 // string -- date Date date = new SimpleDateFormat("yyyy-MM-dd").parse; Student student = new Student(sname, gender, phone, hobby, info, date); StudentService service = new StudentServiceImpl(); service.insert; // 3. 跳转到列表页 request.getRequestDispatcher("StudentListServlet").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}

package com.dashucoding.servlet;import java.io.IOException;import java.sql.SQLException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;/** * 用于处理删除学生 */public class DeleteServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { int sid = Integer.parseInt(request.getParameter; // System.out.println("sStudentListServlet").forward(request, response); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}

package com.dashucoding.servlet;import java.io.IOException;import java.sql.SQLException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;/** * 处理单个学生的更新,查询学生的信息,跳转到更新的页面 */public class EditServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // 接收id int sid = Integer.parseInt(request.getParameter; // 查询学生数据 StudentService service = new StudentServiceImpl(); Student stu = service.findStudentById; // 显示数据 // 存储数据 request.setAttribute("stu", stu); // 跳转 request.getRequestDispatcher("edit.jsp").forward(request, response); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}

package com.dashucoding.servlet;import java.io.IOException;import java.sql.SQLException;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.dashucoding.domain.Student;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;/** * Servlet implementation class SearchStudentServlet */public class SearchStudentServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding; try { // 取到了要查询的关键数据 String sname = request.getParameter; String sgender = request.getParameter("sgender"); // 找service查询 StudentService service = new StudentServiceImpl(); List<Student> list = service.searchStudent(sname, sgender); /*for(Student student : list) { System.out.println("stu=" + student); }*/ request.setAttribute("list", list); // 跳转界面 request.getRequestDispatcher("list.jsp").forward(request, response); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}

package com.dashucoding.servlet;import java.io.IOException;import java.sql.SQLException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dashucoding.domain.PageBean;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;/** * 这是用于分页显示学生列表的servlet */public class StudentListPageServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //1. 获取需要显示的页码数 int currentPage =Integer.parseInt( request.getParameter("currentPage")); //2. 根据指定的页数,去获取该页的数据回来 //List<Student> --- list.jsp StudentService service = new StudentServiceImpl(); PageBean pageBean= service.findStudentByPage(currentPage); request.setAttribute("pageBean", pageBean); //3. 跳转界面。 request.getRequestDispatcher("list_page.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

package com.dashucoding.servlet;import java.io.IOException;import java.sql.SQLException;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.dashucoding.dao.StudentDao;import com.dashucoding.dao.impl.StudentDaoImpl;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;public class StudentListServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // 查询所有的学生 StudentService service = new StudentServiceImpl(); List<Student> list = service.findAll(); // 把数据存储到作用域中 request.setAttribute("list", list); // 跳转页面 request.getRequestDispatcher("list.jsp").forward(request,response); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}

package com.dashucoding.servlet;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;/** * Servlet implementation class UpdateServlet */public class UpdateServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding; try { // 1. 获取客户端提交上来的数据 int sid = Integer.parseInt(request.getParameter; String sname = request.getParameter; String gender = request.getParameter; String phone = request.getParameter; String birthday = request.getParameter("birthday"); String info = request.getParameter; // String hobby = request.getParameter; String[] h = request.getParameterValues; String hobby = Arrays.toString; hobby = hobby.substring(1, hobby.length; // 2. 添加到数据库 Date date = new SimpleDateFormat("yyyy-MM-dd").parse; Student student = new Student(sid, sname, gender, phone, hobby, info, date); // 2. 更新数据库数据 StudentService service = new StudentServiceImpl(); service.update; // 3. 跳转界面 request.getRequestDispatcher("StudentListServlet").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}

package com.dashucoding.util;import java.io.FileInputStream;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JDBCUtil02 { static ComboPooledDataSource dataSource = null; static { dataSource = new ComboPooledDataSource(); } public static DataSource getDataSource() { return dataSource; } /** * 获取连接对象 * @return * @throws SQLException */ public static Connection getConn() throws SQLException{ return dataSource.getConnection(); } /** * 释放资源 * @param conn * @param st * @param rs */ public static void release(Connection conn , Statement st , ResultSet rs){ closeRs; closeSt; closeConn; } public static void release(Connection conn , Statement st){ closeSt; closeConn; } private static void closeRs(ResultSet rs){ try { if(rs != null){ rs.close(); } } catch (SQLException e) { e.printStackTrace(); }finally{ rs = null; } } private static void closeSt(Statement st){ try { if(st != null){ st.close(); } } catch (SQLException e) { e.printStackTrace(); }finally{ st = null; } } private static void closeConn(Connection conn){ try { if(conn != null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); }finally{ conn = null; } }}

package com.dashucoding.util;public class TextUtils { /** * 判断某一个字符串是否为空。 * * @param s * @return */ public static boolean isEmpty(CharSequence s) { return s == null || s.length() == 0; }}

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>添加学生页面</title></head><body> <form method="post" action="AddServlet"> <table border="1" width="600"> <tr> <td>姓名</td> <td><input type="text" name="sname"></td> </tr> <tr> <td>性别</td> <td><input type="radio" name="gender" value="男">男 <input type="radio" name="gender" value="女">女</td> </tr> <tr> <td>电话</td> <td><input type="text" name="phone"></td> </tr> <tr> <td>生日</td> <td><input type="text" name="birthday"></td> </tr> <tr> <td>爱好</td> <td><input type="checkbox" name="hobby" value="游泳">游泳 <input type="checkbox" name="hobby" value="篮球">篮球 <input type="checkbox" name="hobby" value="足球">足球 <input type="checkbox" name="hobby" value="看书">看书 <input type="checkbox" name="hobby" value="写字">写字</td> </tr> <tr> <td>简介</td> <td><textarea name="info" rows="3" cols="20"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" value="添加"></td> </tr> </table> </form></body></html>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>更新学生页面</title></head><body><h3>更新学生页面</h3><form method="post" action="UpdateServlet"> <input type="hidden" name="sid" value="${stu.sid }"> <table border="1" width="600"> <tr> <td>姓名</td> <td><input type="text" name="sname" value="${stu.sname }"></td> </tr> <tr> <td>性别</td> <td> <input type="radio" name="gender" value="男" <c:if test="${stu.gender == '男'}">checked</c:if>>男 <input type="radio" name="gender" value="女" <c:if test="${stu.gender == '女'}">checked</c:if>>女 </td> </tr> <tr> <td>电话</td> <td><input type="text" name="phone" value="${stu.phone }"></td> </tr> <tr> <td>生日</td> <td><input type="text" name="birthday" value="${stu.birthday }"></td> </tr> <tr> <td>爱好</td> <td> <input type="checkbox" name="hobby" value="游泳" <c:if test="${fn:contains(stu.hobby,'游泳') }">checked</c:if>>游泳 <input type="checkbox" name="hobby" value="篮球" <c:if test="${fn:contains(stu.hobby,'篮球') }">checked</c:if>>篮球 <input type="checkbox" name="hobby" value="足球" <c:if test="${fn:contains(stu.hobby,'足球') }">checked</c:if>>足球 <input type="checkbox" name="hobby" value="看书" <c:if test="${fn:contains(stu.hobby,'看书') }">checked</c:if>>看书 <input type="checkbox" name="hobby" value="写字" <c:if test="${fn:contains(stu.hobby,'写字') }">checked</c:if>>写字 </td> </tr> <tr> <td>简介</td> <td><textarea name="info" rows="3" cols="20">${stu.info }</textarea></td> </tr> <tr> <td colspan="2"> <input type="submit" value="更新"> </td> </tr> </table> </form></body></html>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>首页</title></head><body><h3><a href="StudentListServlet">显示所有学生列表</a></h3><br><h3><a href="StudentListPageServlet?currentPage=1">分页显示所有学生</a></h3></body></html>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>学生列表页面</title><script type="text/javascript"> function doDelete { // 弹出对话框,点击确定,请求Servlet var flag = confirm("是否确定删除?"); if{ //访问servlet //window.location.href="DeleteServlet?sDeleteServlet?sSearchStudentServlet" method="post"> <table border="1" width="700"> <tr > <td colspan="8"> 按姓名查询:<input type="text" name="sname"/> &nbsp; 按性别查询:<select name="sgender"> <option value="">--请选择-- <option value="男">男 <option value="女">女 </select> &nbsp;&nbsp;&nbsp; <input type="submit" value="查询"> &nbsp;&nbsp;&nbsp; <a href="add.jsp">添加</a> </td> </tr> <tr align="center"> <td>编号</td> <td>姓名</td> <td>性别</td> <td>电话</td> <td>生日</td> <td>爱好</td> <td>简介</td> <td>操作</td> </tr> <c:forEach items="${list }" var="stu"> <tr align="center"> <td>${stu.sid }</td> <td>${stu.sname }</td> <td>${stu.gender }</td> <td>${stu.phone }</td> <td>${stu.birthday }</td> <td>${stu.hobby }</td> <td>${stu.info }</td> <td><a href="EditServlet?sid=${stu.sid }">更新</a> <a href="#" onclick="doDelete(${stu.sid})">删除</a></td> </tr> </c:forEach> </table> </form></body></html>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>学生列表页面</title><script type="text/javascript"> function doDelete { // 弹出对话框,点击确定,请求Servlet var flag = confirm("是否确定删除?"); if{ //访问servlet //window.location.href="DeleteServlet?sDeleteServlet?sSearchStudentServlet" method="post"> <table border="1" width="700"> <tr> <td colspan="8">按姓名查询:<input type="text" name="sname" /> &nbsp; 按性别查询:<select name="sgender"> <option value="">--请选择-- <option value="男">男 <option value="女">女 </select> &nbsp;&nbsp;&nbsp; <input type="submit" value="查询"> &nbsp;&nbsp;&nbsp; <a href="add.jsp">添加</a> </td> </tr> <tr align="center"> <td>编号</td> <td>姓名</td> <td>性别</td> <td>电话</td> <td>生日</td> <td>爱好</td> <td>简介</td> <td>操作</td> </tr> <c:forEach items="${pageBean.list }" var="stu"> <tr align="center"> <td>${stu.sid }</td> <td>${stu.sname }</td> <td>${stu.gender }</td> <td>${stu.phone }</td> <td>${stu.birthday }</td> <td>${stu.hobby }</td> <td>${stu.info }</td> <td><a href="EditServlet?sid=${stu.sid }">更新</a> <a href="#" onclick="doDelete(${stu.sid})">删除</a></td> </tr> </c:forEach> <tr> <td colspan="8">第 ${pageBean.currentPage } / ${pageBean.totalPage } &nbsp;&nbsp; 每页显示${pageBean.pageSize }条 &nbsp;&nbsp;&nbsp; 总的记录数${pageBean.totalSize } &nbsp;&nbsp;&nbsp; <c:if test="${pageBean.currentPage !=1 }"> <a href="StudentListPageServlet?currentPage=1">首页</a> | <a href="StudentListPageServlet?currentPage=${pageBean.currentPage-1 }">上一页</a> </c:if> <c:forEach begin="1" end="${pageBean.totalPage }" var="i"> <c:if test="${pageBean.currentPage == i }"> ${i } </c:if> <c:if test="${pageBean.currentPage != i }"> <a href="StudentListPageServlet?currentPage=${i }">${i }</a> </c:if> </c:forEach> <c:if test="${pageBean.currentPage !=pageBean.totalPage }"> <a href="StudentListPageServlet?currentPage=${pageBean.currentPage+1 }">下一页</a> | <a href="StudentListPageServlet?currentPage=${pageBean.totalPage }">尾页</a> </c:if> </td> </tr> </table> </form></body></html>

图片 10效果

package com.dashucoding.service.impl;import java.sql.SQLException;import java.util.List;import com.dashucoding.dao.StudentDao;import com.dashucoding.dao.impl.StudentDaoImpl;import com.dashucoding.domain.PageBean;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;/* * 这是学生业务实现 * */public class StudentServiceImpl implements StudentService { @Override public List<Student> findAll() throws SQLException { StudentDao dao = new StudentDaoImpl(); return dao.findAll(); } @Override public void insert(Student student) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.insert; } @Override public void delete throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.delete; } @Override public Student findStudentById throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); return dao.findStudentById; } @Override public void update(Student student) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.update; } @Override public List<Student> searchStudent(String sname, String sgender) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); return dao.searchStudent(sname, sgender); } @Override public PageBean findStudentByPage(int currentPage) throws SQLException { // 封装分页的该页数据 PageBean<Student> pageBean = new PageBean<Student>(); int pageSize = StudentDao.PAGE_SIZE; pageBean.setCurrentPage(currentPage); // 设置当前页 pageBean.setPageSize; // 设置每页显示多少记录 StudentDao dao = new StudentDaoImpl(); List<Student> list = dao.findStudentByPage(currentPage); pageBean.setList; // 设置这一页的学生数据 // 总的记录数, 总的页数。 int count = dao.findCount(); pageBean.setTotalSize; // 设置总的记录数 pageBean.setTotalPage(count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1); // 总页数 return pageBean; }}

好了,欢迎在留言区留言,与大家分享你的经验和心得。

感谢你学习今天的内容,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给更多的朋友,感谢。

达叔小生:往后余生,唯独有你You and me, we are family !90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通简书博客: 达叔小生

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

本文由365bet体育在线官网发布于网络工程,转载请注明出处:Java中的学生管理种类分页功用

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。