分页之原始链接+servlet跳转+MySQL

来源:互联网 发布:xbox one s 国服 网络 编辑:程序博客网 时间:2024/06/05 22:32

注意:这种分页针对数据量不是很多的可以使用。

导入的包:mysql-connector-java-5.1.20-bin.jar

第一步:创建一个实体类

public class BookBean {public static final int PAGE_SIZE = 2;// 每页记录数private int id;// 编号private String name;// 图书名称private double price;// 定价  <span style="font-family: Arial, Helvetica, sans-serif;">这里要有get/set方法</span>

第二步:创建一个DAO

public class BookDao {/** * 获取数据库连接 */public Connection getConnection() {Connection conn = null; // 数据库连接try {Class.forName("com.mysql.jdbc.Driver"); // 加载数据库驱动,注册到驱动管理器// 数据库连接字符串String url = "jdbc:mysql://localhost:3306/db_database09";String username = "root"; // 数据库用户名String password = "root"; // 数据库密码// 创建Connection连接conn = DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn; // 返回数据库连接}/** * 分页查询所有商品信息 * @param page 页数 * @return List<Book> */public List<BookBean> find(int page) {List<BookBean> list = new ArrayList<>(); // 创建ListConnection conn = getConnection(); // 获取数据库连接// 分页查询的SQL语句String sql = "<strong>select * from tb_Book order by id desc limit ?,?</strong>";try {PreparedStatement ps = conn.prepareStatement(sql); // 获取PreparedStatementps.setInt(1, (page - 1) * BookBean.PAGE_SIZE); // 对SQL语句中的第1个参数赋值ps.setInt(2, BookBean.PAGE_SIZE); // 对SQL语句中的第2个参数赋值ResultSet rs = ps.executeQuery(); // 执行查询操作while (rs.next()) { // 光标向后移动,并判断是否有效BookBean b = new BookBean(); // 实例化BookBeanb.setId(rs.getInt("id")); // 对id属性赋值b.setName(rs.getString("name")); // 对name属性赋值b.setPrice(rs.getFloat("price")); // 对price属性赋值list.add(b); // 将BookBean添加到List集合中}rs.close(); // 关闭ResultSetps.close(); // 关闭PreparedStatementconn.close(); // 关闭Connection} catch (SQLException e) {e.printStackTrace();}return list;}/** * 查询总记录数 * @return 总记录数 */public int findCount() {int count = 0; // 总记录数Connection conn = getConnection(); // 获取数据库连接String sql = "select count(*) from tb_book"; // 查询总记录数SQL语句try {Statement stmt = conn.createStatement(); // 创建StatementResultSet rs = stmt.executeQuery(sql); // 查询并获取ResultSetif (rs.next()) { // 光标向后移动,并判断是否有效count = rs.getInt(1); // 对总记录数赋值}rs.close(); // 关闭ResultSetconn.close(); // 关闭Connection} catch (SQLException e) {e.printStackTrace();}return count; // 返回总记录数}}

第三步:创建一个servlet(这里用的是3.0版本)

public class FindServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) <span style="font-family: Arial, Helvetica, sans-serif;">throws ServletException, IOException {</span>
int currPage = 1; // 当前页码<strong>if(request.getParameter("page") != null){// 判断传递页码是否有效(这里的page与创建分页导航的page相对应)</strong>currPage = Integer.parseInt(request.getParameter("page"));// 对当前页码赋值}BookDao dao = new BookDao();// 实例化BookDaoList<!-- <BookBean> --> list = dao.find(currPage);// 查询所有图书信息request.setAttribute("list", list);// 将list放置到request中int pages ; // 总页数int count = dao.findCount();// 查询总记录数if(count % BookBean.PAGE_SIZE == 0){ // 计算总页数pages = count / BookBean.PAGE_SIZE; // 对总页数赋值}else{pages = count / BookBean.PAGE_SIZE + 1; // 对总页数赋值}StringBuffer sb = new StringBuffer();// 实例化StringBufferfor(int i=1; <strong>i <= pages+1</strong>; i++){// 通过循环构建分页导航条,<strong>注意page+1</strong>if(i == currPage){ // 判断是否为当前页sb.append("『" + i + "』");// 构建分页导航条,当点击时,会重点显示出点击的页面}else{// 构建分页导航条<strong>sb.append("<a href='FindServlet?<span style="font-size:18px;">page</span>=" + i + "'>" + i + "</a>");</strong>}sb.append(" ");// 构建分页导航条}request.setAttribute("bar", sb.toString());// 将分页导航条的字符串放置到request中// 转发到bookList.jsp页面request.getRequestDispatcher("bookList.jsp").forward(request, response);}}

第四步:创建一个显示分页数据的jsp和一个跳转到servlet的jsp

首先://一个跳转到servlet的jsp <span style="font-family: Arial, Helvetica, sans-serif;"><% response.sendRedirect("要显示分页数据的jsp")%>;</span>
 然后://一个显示分页数据的jsp
<%@ page import="java.util.*"%><%@ page import="com.mingrisoft.BookBean"%><!DOCTYPE HTML><html><head><meta charset="utf-8"><title>显示图书列表</title><style type="text/css">td,th {padding: 5px;}</style></head><body><div width="98%" align="center"><h2>分页显示图书列表</h2></div><table width="98%" border="0" align="center" cellpadding="0"cellspacing="1" bgcolor="#666666"><tr><th bgcolor="#FFFFFF">ID</th><th bgcolor="#FFFFFF">图书名称</th><th bgcolor="#FFFFFF">价格</th></tr><%// 获取图书信息集合List<BookBean> list = (List<BookBean>) request.getAttribute("list");// 判断集合是否有效if (list == null || list.size() < 1) {out.print("<tr><td bgcolor='#FFFFFF' colspan='5'>没有任何图书信息!</td></tr>");} else {// 遍历图书集合中的数据for (BookBean book : list) {%><tr align="center"><td bgcolor="#FFFFFF" ><%=book.getId()%></td><td bgcolor="#FFFFFF"><%=book.getName()%></td><td bgcolor="#FFFFFF"><%=book.getPrice()%></td></tr><%}}%></table><div width="98%" align="center" style="padding-top:10px;"><%=request.getAttribute("bar")%></div></body>

1 0
原创粉丝点击