1.创建Pager类
package com.yan.shop.model;
import java.util.List;
public class Pager<E> {
/**
* 当前页码
*/
private int pageIndex;
/**
* 每页数目
*/
private int pageSize;
/**
* 总共条数
*/
private int totalRecord;
/**
* 总页数
*/
private int totalPage;
/**
* 具体内容
*/
private List<E> datas;
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 getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<E> getDatas() {
return datas;
}
public void setDatas(List<E> datas) {
this.datas = datas;
}
}
2.通过jdbc按照条件填充列表
public Pager<User> list(int pageIndex,int pageSize) { Connection con=null; PreparedStatement ps=null; ResultSet rs=null; Pager<User> page=new Pager<User>(); List<User> users=new ArrayList<User>(); User u=null; try{ if(pageIndex<=0) {pageIndex=1;} int start=(pageIndex-1)*pageSize; con=DBUtil.getConnection();
String sql="select * from t_user limit ?,?"; String sqlCount="select count(*) from t_user"; ps=con.prepareStatement(sql); ps.setInt(1, start); ps.setInt(2, pageSize ); rs=ps.executeQuery(); while(rs.next()){ u=new User(); u.setId(rs.getInt("id")); u.setNickname(rs.getString("nickname")); u.setPassword(rs.getString("password")); u.setUsername(rs.getString("username")); u.setStatus(rs.getInt("status")); u.setType(rs.getInt("type")); users.add(u); } ps=con.prepareStatement(sqlCount); rs=ps.executeQuery(); int totalRecord=0; while(rs.next()){ totalRecord=rs.getInt(1); } int totalPage=(totalRecord-1)/pageSize+1; page.setPageIndex(pageIndex); page.setPageSize(pageSize); page.setTotalPage(totalPage); page.setTotalRecord(totalRecord); }catch(SQLException e){ e.printStackTrace(); }finally{ DBUtil.close(rs); DBUtil.close(ps); DBUtil.close(con); } page.setDatas(users); return page; }
3.应用,这是list.jsp页面,list是userdao的一个方法,故先创建userdao,通过list()实例化一个page
<%@page import="com.yan.shop.model.Pager"%> <%@page import="com.yan.shop.model.User"%> <%@page import="java.util.List"%> <%@page import="com.yan.shop.dao.IUserDao"%> <%@page import="com.yan.shop.dao.DAOFactory"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <% IUserDao userDao=DAOFactory.getUserDao(); int pageIndex=1; try{ pageIndex=Integer.parseInt(request.getParameter("pageIndex")); }catch(NumberFormatException e){} int pageSize=1; Pager<User> pa=userDao.list(pageIndex,pageSize); List<User> users=pa.getDatas(); User loginUser=(User)session.getAttribute("loginUser"); %> </head> <body> <jsp:include page="inc.jsp"> <jsp:param value="管理" name="op"/> </jsp:include> <table align="center" border="1" width="800"> <tr> <td>用户标识</td> <td>用户名</td> <td>用户密码</td> <td>用户昵称</td> <td>用户类型</td> <td>用户状态</td> <th>操作</th> </tr> <%for(User u:users){ %> <tr> <td><%=u.getId() %></td> <td><%=u.getUsername() %></td> <td><%=u.getPassword() %></td> <td><%=u.getNickname() %></td> <td> <%if(u.getType()==0){ %>普通用户 <%if(loginUser.getType()==1) {%> <a href="setType.jsp?id=<%=u.getId()%>">设置管理员</a><% } }else{ %>管理员<%if(loginUser.getType()==1) {%><a href="setType.jsp?id=<%=u.getId()%>">取消管理员</a><%} } %> </td> <td> <%if(u.getStatus()==0){ %>启用 <%if(loginUser.getType()==1) {%><a href="setStatus.jsp?id=<%=u.getId()%>">停用</a> <%} }else{ %><span style='color:red'>停用</span><%if(loginUser.getType()==1) {%><a href="setStatus.jsp?id=<%=u.getId()%>">启用</a><%} } %> </td> <td> <% if(loginUser.getType()==1){%> <a href="delete.jsp?id=<%=u.getId() %>">删除</a> <a href="updateInput.jsp?id=<%=u.getId()%>">更新</a></td> </tr> <%} } %> <tr> <td colspan="7" align="center">一个有<%=pa.getTotalPage() %>页,当前为第<%=pa.getPageIndex() %>页</td> </tr> <tr> <td colspan="7" align="center"> <%if(pageIndex==1){%>[上一页]<% }else{%><a href="list.jsp?pageIndex=<%=pageIndex-1 %>">[上一页]</a><% }%> <a href="list.jsp?pageIndex=<%=1 %>">[首页]</a> <% int totalPage=pa.getTotalPage(); for(int i=1;i<=totalPage;i++) { if(i==pageIndex){ out.println(i); }else{ %> <a href="list.jsp?pageIndex=<%=i %>">[<%=i %>]</a> <%} }%> <a href="list.jsp?pageIndex=<%=totalPage %>">[尾页]</a> <%if(pageIndex==totalPage){%>[下一页]<% }else{%><a href="list.jsp?pageIndex=<%=pageIndex+1 %>">[下一页]</a><% }%> </tr> </table> </body> </html>