一、Java代码
package com.study.web.servlet;
import com.study.web.entity.Book;
import com.study.web.entity.Student;
import com.study.web.util.JDBCUtil;
import com.study.web.util.PageInfo;
import com.study.web.vo.StudentBanji;
import com.sun.jmx.snmp.SnmpNull;
import com.sun.xml.internal.ws.addressing.WsaTubeHelper;
import javax.print.attribute.standard.Finishings;
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.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
@WebServlet("/book")
public class BookServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("BookServlet.service");
req.setCharacterEncoding("UTF-8");
String method = req.getParameter("method");
if (method == null || method == "") {
method = "selectByPage";
}
switch (method) {
case "selectByPage":
selectByPage(req,resp);
break;
}
}
private void selectByPage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("BookServlet.selectByPage");
String pageNoStr = req.getParameter("pageNo");
if (pageNoStr == null || pageNoStr.equals("")) {
pageNoStr = "1";
}
String pageSizeStr = req.getParameter("pageSize");
if (pageSizeStr == null || pageSizeStr.equals("")) {
pageSizeStr = "3";
}
int pageNo = Integer.parseInt(pageNoStr);
int pageSize = Integer.parseInt(pageSizeStr);
int totalCount = getTotalCount();
int totalPage = (int) Math.ceil((double) totalCount / pageSize);
int offset = (pageNo - 1) * pageSize;
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
ArrayList<Book> list = new ArrayList<>();
try {
connection = JDBCUtil.getConnection();
String sql = "select id,name,publish,price from book limit ?,?";
statement = connection.prepareStatement(sql);
statement.setInt(1,offset);
statement.setInt(2,pageSize);
System.out.println(statement);
resultSet = statement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String publish = resultSet.getString("publish");
double price = resultSet.getDouble("price");
Book book = new Book(id,name,publish,price);
list.add(book);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
JDBCUtil.close(connection,statement,resultSet);
}
PageInfo pageInfo = new PageInfo(list, pageNo,totalPage,pageSize);
req.setAttribute("pageInfo",pageInfo);
req.getRequestDispatcher("book_list.jsp").forward(req,resp);
}
private int getTotalCount() {
System.out.println("BookServlet.getTotalCount");
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
int count = 0;
try {
connection = JDBCUtil.getConnection();
String sql = "select count(*) from book";
statement = connection.prepareStatement(sql);
resultSet = statement.executeQuery();
if (resultSet.next()) {
count = resultSet.getInt(1);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
JDBCUtil.close(connection,statement,resultSet);
}
return count;
}
二、封装页面展示的分页的所有信息
package com.study.web.util;
import java.util.ArrayList;
public class PageInfo<T> {
private ArrayList<T> list;
private Integer pageNo;
private Integer totalPage;
private Integer pageSize;
public PageInfo() {
}
public PageInfo(ArrayList<T> list, Integer pageNo, Integer totalPage, Integer pageSize) {
this.list = list;
this.pageNo = pageNo;
this.totalPage = totalPage;
this.pageSize = pageSize;
}
public ArrayList<T> getList() {
return list;
}
public void setList(ArrayList<T> list) {
this.list = list;
}
public Integer getPageNo() {
return pageNo;
}
public void setPageNo(Integer pageNo) {
this.pageNo = pageNo;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
@Override
public String toString() {
return "PageInfo{" +
"list=" + list +
", pageNo=" + pageNo +
", totalPage=" + totalPage +
", pageSize=" + pageSize +
'}';
}
}
三、html代码
- 使用了bootstrap中的有关表格、分页等的界面优化。
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.study.web.entity.Book" %>
<%@ page import="com.study.web.util.PageInfo" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021/8/10
Time: 19:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/static/bootstrap-3.4.1-dist/css/bootstrap.css" />
</head>
<body>
<%-- ${list}--%>
<a class="btn btn-primary" href="<%=request.getContextPath()%>/book_insert.jsp">添加</a>
<table class="table table-bordered table-striped table-hover table-condensed">
<tr>
<td>ID</td>
<td>书名</td>
<td>出版社</td>
<td>价格</td>
<td>删除/修改</td>
</tr>
<%
//ArrayList<Book> list = (ArrayList<Book>) request.getAttribute("list");
PageInfo pageInfo = (PageInfo) request.getAttribute("pageInfo");
ArrayList<Book> list = pageInfo.getList();
System.out.println(list);
for (Book book : list) {
%>
<tr>
<td><%=book.getId()%></td>
<td><%=book.getName()%></td>
<td><%=book.getPublish()%></td>
<td><%=book.getPrice()%></td>
<td>
<a class="btn btn-danger btn-sm" href="javascript:void(0)" onclick="deleteById(<%=book.getId()%>)">删除</a>
<a class="btn btn-warning btn-sm" href="<%=request.getContextPath()%>/book?method=selectById&id=<%=book.getId()%>">编辑</a>
</td>
</tr>
<%
}
%>
</table>
<nav aria-label="Page navigation">
<ul class="pagination">
<%--设置往左换页--%>
<%
if (pageInfo.getPageNo() > 1) {
%>
<li>
<a href="<%=request.getContextPath()%>/book?method=selectByPage&pageNo=<%=pageInfo.getPageNo()-1%>" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<%
} else {
%>
<li class="disabled">
<a aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<%
}
%>
<%--设置每一页--%>
<%
for (int i = 1; i <= pageInfo.getTotalPage(); i++) {
%>
<li>
<a href="<%=request.getContextPath()%>/book?method=selectByPage&pageNo=<%=i%>"><%=i%></a>
</li>
<%
}
%>
<%--设置往右换页--%>
<%
if (pageInfo.getPageNo() < pageInfo.getTotalPage()) {
%>
<li>
<a href="<%=request.getContextPath()%>/book?method=selectByPage&pageNo=<%=pageInfo.getPageNo()+1%>" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
<%
} else {
%>
<li class="disabled">
<a aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
<%
}
%>
</ul>
</nav>
<script>
function deleteById(id) {
var isDelete = confirm("请确认您是否要删除?");
if (isDelete) {
location.href = "/JavaWeb/book?method=deleteById&id=" + id;
}
}
</script>
</body>
</html>