diff --git a/src/main/java/example/controller/ComputerServlet.java b/src/main/java/example/controller/ComputerServlet.java index f51ed63..44c77b0 100644 --- a/src/main/java/example/controller/ComputerServlet.java +++ b/src/main/java/example/controller/ComputerServlet.java @@ -13,6 +13,7 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.sql.SQLException; import java.util.List; +import java.util.Map; @WebServlet(urlPatterns = {"/computer"}) public class ComputerServlet extends HttpServlet { @@ -64,11 +65,26 @@ public class ComputerServlet extends HttpServlet { } private void listServlet(HttpServletRequest req, HttpServletResponse resp) throws SQLException, ServletException, IOException { - List computers= computerService.listComputer(); - req.setAttribute("computers", computers); + int page = 1; + int pageSize = 5; // 每页显示的条数 + + // 获取页码参数 + String pageParam = req.getParameter("page"); + if (pageParam != null) { + page = Integer.parseInt(pageParam); + } + + // 获取分页数据 + Map data = computerService.listComputersWithPagination(page, pageSize); + + req.setAttribute("computers", data.get("computers")); + req.setAttribute("totalPages", data.get("totalPages")); + req.setAttribute("currentPage", data.get("currentPage")); + req.getRequestDispatcher("computerList.jsp").forward(req, resp); } + @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String action = req.getParameter("action"); diff --git a/src/main/java/example/dao/ComputerDao.java b/src/main/java/example/dao/ComputerDao.java index 75dad69..0279c28 100644 --- a/src/main/java/example/dao/ComputerDao.java +++ b/src/main/java/example/dao/ComputerDao.java @@ -41,11 +41,21 @@ public class ComputerDao { } } - public List getAllComputer() throws SQLException { - String sql = "select * from computer"; - return queryRunner.query(sql,new BeanListHandler<>(Computer.class)); + public List getComputersByPage(int page, int pageSize) throws SQLException { + int offset = (page - 1) * pageSize; + String sql = "SELECT * FROM computer LIMIT ? OFFSET ?"; + return queryRunner.query(sql, new BeanListHandler<>(Computer.class), pageSize, offset); } + public int getComputerCount() throws SQLException { + String sql = "SELECT COUNT(*) FROM computer"; + return queryRunner.query(sql, rs -> { + rs.next(); + return rs.getInt(1); + }); + } + + public Computer getComputerById(int i) { String sql = "select * from computer where id=?"; diff --git a/src/main/java/example/service/IComputerService.java b/src/main/java/example/service/IComputerService.java index 113ac54..18bfff9 100644 --- a/src/main/java/example/service/IComputerService.java +++ b/src/main/java/example/service/IComputerService.java @@ -4,6 +4,7 @@ import example.model.Computer; import java.sql.SQLException; import java.util.List; +import java.util.Map; public interface IComputerService { @@ -16,4 +17,6 @@ public interface IComputerService { Computer getComputer(String id); void updateComputer(String id, String name, double v, int i); + + Map listComputersWithPagination(int page, int pageSize) throws SQLException; } diff --git a/src/main/java/example/service/impl/ComputerServiceImpl.java b/src/main/java/example/service/impl/ComputerServiceImpl.java index d6aba61..9b656ac 100644 --- a/src/main/java/example/service/impl/ComputerServiceImpl.java +++ b/src/main/java/example/service/impl/ComputerServiceImpl.java @@ -5,7 +5,10 @@ import example.model.Computer; import example.service.IComputerService; import java.sql.SQLException; +import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class ComputerServiceImpl implements IComputerService { @@ -19,9 +22,10 @@ public class ComputerServiceImpl implements IComputerService { @Override public List listComputer() throws SQLException { - return computerDao.getAllComputer(); + return Collections.emptyList(); } + @Override public void deleteComputer(String id) { computerDao.deleteComputer(Integer.parseInt(id)); @@ -36,4 +40,20 @@ public class ComputerServiceImpl implements IComputerService { public void updateComputer(String id, String name, double v, int i) { computerDao.updateComputer(name, v, i, Integer.parseInt(id)); } + + @Override + public Map listComputersWithPagination(int page, int pageSize) throws SQLException { + List computers = computerDao.getComputersByPage(page, pageSize); + int totalCount = computerDao.getComputerCount(); + int totalPages = (int) Math.ceil((double) totalCount / pageSize); + + Map result = new HashMap<>(); + result.put("computers", computers); + result.put("totalPages", totalPages); + result.put("currentPage", page); + + return result; + } + + } diff --git a/src/main/webapp/computerList.jsp b/src/main/webapp/computerList.jsp index 587f63c..ba6fd7f 100644 --- a/src/main/webapp/computerList.jsp +++ b/src/main/webapp/computerList.jsp @@ -44,6 +44,31 @@ +
+ + 首页 + + + + 上一页 + + + + + + ${i} + + + + + + 下一页 + + + + 尾页 +

${requestScope.msg}