本文实例为大家分享了jsp+mysql实现网页的分页查询的具体代码,供大家参考,具体内容如下
一、实现分页查询的核心sql语句
(1)查询数据库的记录总数的sql语句:
1 | select count (*) from +(表名); |
(2)每次查询的记录数的sql语句:
其中:0是搜索的索引,2是每次查找的条数。
1 | select * from 表名 limit 0,2; |
二、代码实现
*上篇写过这两个类 , DBconnection类:用于获取数据库连接,Author对象类。这两个类的代码点击连接查看。点击链接查看 DBconnection类和Author对象类
(1)登录页面:index.jsp。
1 2 | < meta charset = "utf-8" >< title >Insert title here</ title > < a href = "AuthorListPageServlet" >用户列表分页查询</ a > |
(2)显示页面:userlistpage.jsp。
1 | < meta charset = "utf-8" >< title >查询页面</ title > |
编号 | 名称 | 价格 | 数量 | 日期 | 风格 |
${author.id} | ${author.name } | ${author.price } | ${author.num } | ${author.dates} | ${author.style} |
(3)功能实现:AuthorDao.java。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | package com.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.entity.Author; public class AuthorDao { public Author check(String username , int password ) { Author obj = null ; try { DBConnection db = new DBConnection(); //获取数据库连接 Connection conn = db.getConn(); String sql= "select *from furnitures where name = ? and id = ?" ; PreparedStatement ps=conn.prepareStatement(sql); //设置用户名和密码作为参数放入sql语句 ps.setString( 1 ,username); ps.setInt( 2 ,password); //执行查询语句 ResultSet rs = ps.executeQuery(); //用户名和密码正确,查到数据 欧式风格 茶几 if (rs.next()) { obj = new Author(); obj.setId(rs.getInt( 1 )); obj.setName(rs.getString( 2 )); obj.setPrice(rs.getInt( 3 )); obj.setNum(rs.getInt( 4 )); obj.setDates(rs.getString( 5 )); obj.setStyle(rs.getString( 6 )); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return obj; } /** * 用户列表信息查询 * @return */ public List<author> queryAuthorList(){ Author obj = null ; List<author> list = new ArrayList<author>(); try { DBConnection db = new DBConnection(); //获取数据库连接 Connection conn = db.getConn(); String sql= "select *from furnitures" ; PreparedStatement ps=conn.prepareStatement(sql); //执行查询语句 ResultSet rs = ps.executeQuery(); //用户名和密码正确,查到数据 欧式风格 茶几 //循环遍历获取用户信息 while (rs.next()) { obj = new Author(); obj.setId(rs.getInt( 1 )); obj.setName(rs.getString( 2 )); obj.setPrice(rs.getInt( 3 )); obj.setNum(rs.getInt( 4 )); obj.setDates(rs.getString( 5 )); obj.setStyle(rs.getString( 6 )); //将对象加入list里边 list.add(obj); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } /** * 查询用户表总记录数 * @return */ public int queryUserListCount() { DBConnection db; try { db = new DBConnection(); Connection conn = db.getConn(); String sql = "select count(*) from furnitures" ; PreparedStatement ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); if (rs.next()) { return rs.getInt( 1 ); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return 0 ; } /** * 查询用户分页数据 * @param pageIndex数据起始索引 * @param pageSize每页显示条数 * @return */ public List<author>queryUserListPage( int pageIndex, int pageSize){ Author obj = null ; List<author> list = new ArrayList<author>(); try { Connection conn = new DBConnection().getConn(); String sql = "select * from furnitures limit ?,?;" ; PreparedStatement ps = conn.prepareStatement(sql); ps.setObject( 1 , pageIndex); ps.setObject( 2 ,pageSize); ResultSet rs = ps.executeQuery(); //遍历结果集获取用户列表数据 while (rs.next()) { obj = new Author(); obj.setId(rs.getInt( 1 )); obj.setName(rs.getString( 2 )); obj.setPrice(rs.getInt( 3 )); obj.setNum(rs.getInt( 4 )); obj.setDates(rs.getString( 5 )); obj.setStyle(rs.getString( 6 )); list.add(obj); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } /** * 用户新增 * @param obj */ public void add(Author obj) { try { DBConnection db = new DBConnection(); //获取数据库连接 Connection conn = db.getConn(); String sql= "insert into furnitures values(id,?,?,?,?,?)" ; PreparedStatement ps=conn.prepareStatement(sql); ps.setObject( 1 , obj.getName()); ps.setObject( 2 , obj.getPrice()); ps.setObject( 3 , obj.getNum()); ps.setObject( 4 ,obj.getDates()); ps.setObject( 5 , obj.getStyle()); //执行sql语句 ps.execute(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //删除用户 public void del( int id) { try { DBConnection db = new DBConnection(); //获取数据库连接 Connection conn = db.getConn(); String sql= "delete from furnitures where id = ?" ; PreparedStatement ps=conn.prepareStatement(sql); ps.setObject( 1 , id); //执行sql语句 ps.execute(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }</author></author></author></author></author></author> |
(4)交互层:AuthorListPageServlet.java。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | package com.servlet; import java.io.IOException; import java.util.List; 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 com.dao.AuthorDao; import com.entity.Author; import com.util.PageBean; /** * Servlet implementation class AuthorListPageServlet */ @WebServlet ( "/AuthorListPageServlet" ) public class AuthorListPageServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public AuthorListPageServlet() { super (); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub int pageSize = 2 ; AuthorDao ad = new AuthorDao(); //总记录数 int record = ad.queryUserListCount(); //接收页面传入的页码 String strPage = request.getParameter( "currPage" ); int currPage = 1 ; //默认第一页 if (strPage != null ) { currPage = Integer.parseInt(strPage); } PageBean<author> pb = new PageBean<author>(currPage,pageSize,record); //查询某一页的结果集 List<author> list = ad.queryUserListPage(pb.getPageIndex(), pageSize); pb.setList(list); request.setAttribute( "pageBean" , pb); request.getRequestDispatcher( "userlistpage.jsp" ).forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }</author></author></author> |
(5)工具类:PageBean.java。作用是:获取结果集。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | package com.util; import java.util.List; public class PageBean<t>{ private int currentPage; //当前页码 private int pageIndex; //数据起始索引 private int pageSize; //每页条数 private int record; //总记录数 private int totalPage; //总页数 private List<t>list; //每页显示的结果集 /** * 构造方法初始化pageIndex和totalPage * @param currentPage * @param pageIndex * @param pageSize */ public PageBean( int currentPage, int pageSize, int record) { this .currentPage = currentPage; this .pageSize = pageSize; this .record = record; //总页数 if (record % pageSize == 0 ) { //整除,没有多余的页 this .totalPage = record / pageSize; } else { //有多余的数据,在增加一页 this .totalPage = record / pageSize + 1 ; } //计算数据起始索引pageIndex if (currentPage this .totalPage) { this .currentPage = this .totalPage; } this .pageIndex = ( this .currentPage - 1 )* this .pageSize; } public int getCurrentPage() { return currentPage; } public void setCurrentPage( int currentPage) { this .currentPage = currentPage; } public int getPageIndex() { return pageIndex; } public void setPageIndex( int pageIndex) { this .pageIndex = pageIndex; } public int getPageSize() { return pageSize; } public void setPageSize( int pageSize) { this .pageSize = pageSize; } public int getRecord() { return record; } public void setRecord( int record) { this .record = record; } public int getTotalPage() { return totalPage; } public void setTotalPage( int totalPage) { this .totalPage = totalPage; } public List<t> getList() { return list; } public void setList(List<t> list) { this .list = list; } }</t></t></t></t> |
三、运行结果
(1)首页:
(2)中间页:
(3)尾页:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IT俱乐部。