-
分页基本概述
-
什么是分页查询?
- 将数据按页分配,每一页显示固定数量的数据
-
为什么使用分页查询?
- 利于页面布局,且显示的效率高!!
-
两种分页实现方式:
-
物理分页:
- 使用数据库的分页功能,一次只查询一页数据;
-
逻辑分页:
- 一次查出全部数据,然后由程序控制取出需要的数据;
-
-
-
分页关键点
- 分页SQL语句;
- 后台处理: dao/service/servlet/JSP
-
物理分页的功能设计
-
PageCustomer分页对象:
- pageIndex(从1开始)
- pageSize(每页多少条数据)
- totalSize(总共多少条)
- totalPage(总共多少页)
- List<Customer>(这页的数据)
-
点击第2页连接,把pageIndex=2发送给Servlet
- Servlet调用service
- service执行分页业务,调用dao
- dao进行数据库分页操作,返回Page分页对象
-
-
实现步骤
-
环境准备
-
引入jar文件及引入配置文件
- 数据库驱动包
- C3P0连接池jar文件 及 配置文件
-
DbUtis组件:
- 公用类: JdbcUtils.java
-
- 先设计:PageBean.java
- Dao接口设计/实现: 2个方法
- Service/servlet
- JSP
-
-
示例1
- 表示分页的domain
public classPageCustomer { private intpageIndex;//第几页 private intpageSize;//每页的数据 private inttotalSize;//一共有多少数据 private inttotalPage;//一共多少页 privateList<Customer>customerList;//查询页的数据 publicPageCustomer(intpageIndex,int pageSize) { if(pageIndex < 1) { this.pageIndex= 1; }else { this.pageIndex= pageIndex; } if(pageSize < 1) { this.pageSize= 1; }else { this.pageSize= pageSize; } } //get,set略 } |
- 分页Servlet
public class PageCustomerServletextends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ this.doPost(request, response); }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ response.setContentType("text/html");
try{ int pageIndex= 1;//当前第几页 int pageSize= 10;//每页的数据 String pageIndexStr= request.getParameter("pageIndex"); String pageSizeStr= request.getParameter("pageSize"); //为了程序健壮性和容错性,如果 request.getParameter("pageIndex"); //没有查到数据,那么还有默认值int pageIndex = 1; //如果查到了数据,就直接用查到的数据,替代默认值 try{ pageIndex= Integer.parseInt(pageIndexStr); pageSize= Integer.parseInt(pageSizeStr); }catch (Exception e) {
}
//以当前页和每页的数据构造出一个分页类 PageCustomer pageCustomer= new PageCustomer(pageIndex, pageSize); //以这个分页类为参数,传递给DAO,获取这个页数的数据集合 ObjectFactory.getCustomerService().page(pageCustomer); //将页数,和该页的数据个数传递给JSP request.setAttribute("pageCustomer", pageCustomer); //将存放有该页面的人员信息集合,传递给JSP端 request.setAttribute("customerList",pageCustomer.getCustomerList()); //数据查询完毕之后,就跳转到分页显示页面 request.getRequestDispatcher("pageCustomer.jsp").forward(request,response); }catch (Exception e) { response.getWriter().print("分页查询出错:"+ e.getMessage()); } } } |
- 工厂类,快速获取Service对象
public class ObjectFactory{ private static DataSource dataSource; private static CustomerService customerService; private static CustomerDao customerDao; static{ dataSource= new ComboPooledDataSource(); customerService |