分页之原始链接+servlet跳转+MySQL
2015-12-05 13:04
483 查看
注意:这种分页针对数据量不是很多的可以使用。
导入的包:mysql-connector-java-5.1.20-bin.jar
第一步:创建一个实体类
第二步:创建一个DAO
第三步:创建一个servlet(这里用的是3.0版本)
第四步:创建一个显示分页数据的jsp和一个跳转到servlet的jsp
导入的包: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<>(); // 创建List Connection conn = getConnection(); // 获取数据库连接 // 分页查询的SQL语句 String sql = "<strong>select * from tb_Book order by id desc limit ?,?</strong>"; try { PreparedStatement ps = conn.prepareStatement(sql); // 获取PreparedStatement ps.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(); // 实例化BookBean b.setId(rs.getInt("id")); // 对id属性赋值 b.setName(rs.getString("name")); // 对name属性赋值 b.setPrice(rs.getFloat("price")); // 对price属性赋值 list.add(b); // 将BookBean添加到List集合中 } rs.close(); // 关闭ResultSet ps.close(); // 关闭PreparedStatement conn.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(); // 创建Statement ResultSet rs = stmt.executeQuery(sql); // 查询并获取ResultSet if (rs.next()) { // 光标向后移动,并判断是否有效 count = rs.getInt(1); // 对总记录数赋值 } rs.close(); // 关闭ResultSet conn.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(); // 实例化BookDao List<!-- <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(); // 实例化StringBuffer for(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>
相关文章推荐
- more、less 和 most 的区别
- 十万条Access数据表分页的两个解决方法
- sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
- 高效的mysql分页方法及原理
- asp又一个分页的代码例子
- SqlServer 2000、2005分页存储过程整理第1/3页
- ADO存取数据库时如何分页显示
- 透彻掌握ASP分页技术很详细的分析
- 一条SQL语句搞定Sql2000 分页
- 分页 SQLServer存储过程
- 实现SQL分页的存储过程代码
- sql分页查询几种写法
- SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)
- mysql 分页优化解析
- 用ODBC的分页显示
- jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
- 一步步打造漂亮的新闻列表(无刷新分页、内容预览)第一步
- asp.net利用后台实现直接生成html分页的方法
- asp.net中如何调用sql存储过程实现分页
- 浅谈基于SQL Server分页存储过程五种方法及性能比较