package com.news.util; /** * 有了记录总条数后,页面控制类; * 根据总记录数,每页显示条数,来得到总页数; * @author Administrator * */ public class PageControler { public int getTotalPages(int count,int pageSize){ int totalPages=0; //如果总记录数除以每页显示条数,能够整除; //总页数就是它们的商,否则为商+1 if(count%pageSize==0){ totalPages=count/pageSize; }else{ totalPages=count/pageSize+1; } return totalPages; } }
UserDao中的抽象方法 //通过查询获取数据表中数据总条数; public int getCount(); //根据当前页码和页数,来分页的方法;返回User集合; public ListqueryUserByPage(int currentPage,int pageSize); //UserDaoImpl实现类中的方法 /* 获得user的总个数,即要分页的总记录数 * @see com.news.dao.UserDao#getCount() */ @Override public int getCount() { Connection con=null; Statement st=null; ResultSet rs=null; int count=0; try { con=DaoFactory.getConnection(); st=con.createStatement(); String sql="select count(*) from t_user"; rs=st.executeQuery(sql); if(rs.next()){ count=rs.getInt(1); } } catch (SQLException e) { e.printStackTrace(); }finally{ DaoFactory.closeAll(rs, st, con); } return count; } @Override public ListqueryUserByPage(int currentPage, int pageSize) { Connection con=null; Statement st=null; ResultSet rs=null; Listusers=null; try { con=DaoFactory.getConnection(); st=con.createStatement(); users=new ArrayList(); String sql="select top "+pageSize+" * from t_user where id not in (select top "+(currentPage-1)*pageSize+" id from t_user order by id)order by id"; rs=st.executeQuery(sql); //遍历结果集 while(rs.next()){ //从数据库中取出一条记录后,放到实体对象中; User user=new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setEmail(rs.getString("email")); user.setAddress(rs.getString("address")); user.setHobby(rs.getString("hobby")); //将实体对象放入集合中; users.add(user); } } catch (SQLException e) { e.printStackTrace(); }finally{ DaoFactory.closeAll(rs, st, con); } return users; }
show_user.jsp页面代码如下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page import="com.news.dao.*,com.news.dao.impl.*,com.news.entity.*,com.news.util.*" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> My JSP 'index.jsp' starting page=用户列表<% //获取当前页码,如果获取不到,默认是第一页; String pageIndex=request.getParameter("pageIndex"); if(pageIndex==null){ pageIndex="1"; } int currentPage=Integer.parseInt(pageIndex); int pageSize=4; UserDao ud=new UserDaoImpl(); PageControler pc=new PageControler(); int count=ud.getCount(); //获得总页数; int totalPages=pc.getTotalPages(count,pageSize); //分页查询,得到当前页数数据; Listusers=ud.queryUserByPage(currentPage,pageSize); for(int i=0;i<% } %> 编号 账号 密码 邮箱 住址 爱好 <%=user.getId() %> <%=user.getUsername() %> <%=user.getPwd() %> <%=user.getEmail() %> <%=user.getAddress() %> <%=user.getHobby() %> 第<%=currentPage %>页/共<%=totalPages %>页 首页 <% if(currentPage>1){ %> 上一页|| <% } if(currentPage 下一页|| <%} %> 末页