javaEE分页技术,基于mysql数据库:分类的实现思想请看图片,
具体的代码:
VO层:
public class PageBean {
private List list;// 显示的数据集合
private int totalrecord;// 总记录数据
private int pagesize;// 每页要显示的数据
private int totalpage;// 总共有多少页面
private int currentpage;// 当前页
private int previouspage;// 上一页
private int nextpage;// 下一页
private int[] pagebar;// 页码条
public int getTotalpage() {
if (this.totalrecord % this.pagesize == 0) {
this.totalpage = this.totalrecord / this.pagesize;
} else {
this.totalpage = this.totalrecord / this.pagesize + 1;
}
return totalpage;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getTotalrecord() {
return totalrecord;
}
public void setTotalrecord(int totalrecord) {
this.totalrecord = totalrecord;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public int getCurrentpage() {
return currentpage;
}
public void setCurrentpage(int currentpage) {
this.currentpage = currentpage;
}
public int getPreviouspage() {
if (this.currentpage - 1 < 1) {
this.previouspage = 1;
} else {
this.previouspage = this.currentpage - 1;
}
return previouspage;
}
public int getNextpage() {
if (this.currentpage + 1 >= this.totalpage) {
this.nextpage = this.totalpage;
} else {
this.nextpage = this.currentpage + 1;
}
return nextpage;
}
public int[] getPagebar() {
int pagebar[]=null;
int startpage;
int endpage;
if (this.totalpage <= 5) {
pagebar= new int[this.totalpage];//显示页码条的多少,注意下面的数字也要改动
startpage = 1;
endpage = this.totalpage;
} else {
pagebar= new int[5];//显示页码条的多少,注意下面的数字也要改动
startpage = this.currentpage - 2;
endpage = this.currentpage + 2;
if (startpage < 1) {
startpage = 1;
endpage = 5;
}
if (endpage > this.totalpage) {
endpage = this.totalpage;
startpage = this.totalpage - 4;
}
}
int index=0;
for (int i = startpage; i <= endpage; i++) {
pagebar[index++] = i;
}
this.pagebar = pagebar;
return pagebar;
}
}
public class QueryInfo {
private int currentpage=1;//用户当前看的页
private int pagesize=5;//记住用户想看的页面数据多少
private int startindex;//记住用户看的页的数据在数据库的起始位置
public int getCurrentpage() {
return currentpage;
}
public void setCurrentpage(int currentpage) {
this.currentpage = currentpage;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public int getStartindex() {
this.startindex=(this.currentpage-1)*this.pagesize;
return startindex;
}
}
public class QueryResult {
private List list;//记住用户看的页的数据;
private int totalrecord;//记住总记录数
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getTotalrecord() {
return totalrecord;
}
public void setTotalrecord(int totalrecord) {
this.totalrecord = totalrecord;
}
}
servlet层:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
QueryInfo info= WebUtils .request2Bean(req, QueryInfo.class);
BusinessService service=new BusinessServiceImpl();
PageBean pagebean=service.pageQuery(info);
req.setAttribute("pagebean",pagebean);
req.getRequestDispatcher("/WEB-INF/jsp/listcustomer.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
req.setAttribute("message", "查询失败");
req.getRequestDispatcher("/message.jsp").forward(req, resp);
}
}
service层
public PageBean pageQuery(QueryInfo queryInfo ){
//调用DAO获取到页面数据;
QueryResult qr = dao.pageQuery(queryInfo.getStartindex(), queryInfo.getPagesize());
//根据dao查询结果,生成页面显示需要pagebean
PageBean pb=new PageBean();
pb.setCurrentpage(queryInfo.getCurrentpage());
pb.setList(qr.getList());
pb.setPagesize(queryInfo.getPagesize());
pb.setTotalrecord(qr.getTotalrecord());
return pb;
}
dao层
public QueryResult pageQuery(int startindex, int pagesize) {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
QueryResult query = new QueryResult();
try {
conn = JdbcUtils.getConnection();
String sql = "select * from customer limit ?,?";
st = conn.prepareStatement(sql);
st.setInt(1, startindex);
st.setInt(2, pagesize);
rs = st.executeQuery();
List list = new ArrayList();
while (rs.next()) {
Customer c = new Customer();
c.setBirthday(rs.getDate("birthday"));
c.setCellphone(rs.getString("cellphone"));
c.setDescription(rs.getString("description"));
c.setEmail(rs.getString("email"));
c.setGender(rs.getString("gender"));
c.setId(rs.getString("id"));
c.setName(rs.getString("name"));
c.setPreference(rs.getString("preference"));
c.setType(rs.getString("type"));
list.add(c);
}
query.setList(list);
sql = "select count(*) from customer";
st = conn.prepareStatement(sql);
rs = st.executeQuery();
if (rs.next()) {
query.setTotalrecord(rs.getInt(1));
}
return query;
} catch (SQLException e) {
throw new DaoException();
} finally {
JdbcUtils.release(conn, st, rs);
}
}