1,总体架构
index是进去的页面,
可以跳转Insert的增加页面,operatePerson是根据传进来的URI来判断增删改查的页面,
DbManager.java是封装的数据库操作类, Pagination.java是页脚的信息栏
2,index页面
final int pageSize = 5;//一页显示多少纪录 int pageNum = 1;//当前页数 int pageCount = 1;//总页数 int recordCount = 0;//总记录数
<form action="operatePerson.jsp" method="post"> <table border="1"> <% for(; resultSet.next();){ out.println("<tr>"); String name = resultSet.getString("name"); out.println("<td>" + name + "</td>"); out.println("<td>" + resultSet.getString("age") + "</td>"); out.println("<td>" + resultSet.getString("sex") + "</td>"); out.println("<td><a href='operatePerson.jsp?action=delete&name=" + name +"'>删除</a></td>"); out.println("<td><a href='operatePerson.jsp?action=edit&name=" + name +"'>修改</a></td>"); out.println("</tr>"); } %> </table> <%=Pagination.getPagination(pageNum, pageCount , recordCount, request.getRequestURI()) %>
画出表,包括页脚,(上面的form其实没有什么用
分页技术使用数据库的 select * from person limit ?,? ----意思是从哪条开始(不包括这一条)的 n条记录
问号使用preparedStatement语句来实现
代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="java.sql.DriverManager"%> <%@ page import="java.sql.Connection"%> <%@ page import="java.sql.Statement"%> <%@ page import="java.sql.ResultSet"%> <%@ page import="java.sql.PreparedStatement"%> <%@ page import="java.sql.SQLException"%> <%@ page import="testPackage.DbManager" %> <%@ page import="testPackage.Pagination" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <% final int pageSize = 5;//一页显示多少纪录 int pageNum = 1;//当前页数 int pageCount = 1;//总页数 int recordCount = 0; try{//当前页数 pageNum = Integer.parseInt(request.getParameter("pageNum")); System.out.println("0000:" + pageNum); }catch(Exception e){} String sql = null; Connection con = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try{ sql = "select count(*) from person"; recordCount = DbManager.getCount(sql); pageCount = (recordCount + pageSize - 1) / pageSize; int startRecord = (pageNum - 1) * pageSize; sql = "select * from person limit ?,?"; con = DbManager.getConnection(); preparedStatement = con.prepareStatement(sql); DbManager.setParams(preparedStatement, startRecord, pageSize); resultSet = preparedStatement.executeQuery(); %> <body> <a href="Insert.jsp">新建一个</a> <form action="operatePerson.jsp" method="post"> <table border="1"> <% for(; resultSet.next();){ out.println("<tr>"); String name = resultSet.getString("name"); out.println("<td>" + name + "</td>"); out.println("<td>" + resultSet.getString("age") + "</td>"); out.println("<td>" + resultSet.getString("sex") + "</td>"); out.println("<td><a href='operatePerson.jsp?action=delete&name=" + name +"'>删除</a></td>"); out.println("<td><a href='operatePerson.jsp?action=edit&name=" + name +"'>修改</a></td>"); out.println("</tr>"); } %> </table> <%=Pagination.getPagination(pageNum, pageCount , recordCount, request.getRequestURI()) %> <br/> <%=pageNum %> </form> <% }catch(SQLException e1){ out.println("0001" + e1.getMessage()); } finally { if (resultSet != null) resultSet.close(); if (preparedStatement != null) preparedStatement.close(); if (con != null) con.close(); } %> </body> </html>