后台数据库是mysql5.X,使用mysql的分页语句,如:select * from test limit 0,10;
Dao中分页取数据的方法:
分页的action:
Dao中分页取数据的方法:
- public List<Users> getPage(int start,int pageRecord)
- {
- conn = DBUtil.getConn();
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- List<Users> userList = new ArrayList<Users>();
- String sql = "select login_name,email,address,tel from users limit ?,?";
- try
- {
- pstmt = conn.prepareStatement(sql);
- pstmt.setInt(1, start);
- pstmt.setInt(2, pageRecord);
- rs = pstmt.executeQuery();
- Users user = null;
- while(rs.next())
- {
- user = new Users();
- user.setLoginName(rs.getString("login_name"));
- user.setEmail(rs.getString("email"));
- user.setAddress(rs.getString("address"));
- user.setTel(rs.getString("tel"));
- userList.add(user);
- }
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- finally
- {
- DBUtil.close(rs);
- DBUtil.close(pstmt);
- DBUtil.close(conn);
- }
- return userList;
- }
public List<Users> getPage(int start,int pageRecord)
{
conn = DBUtil.getConn();
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Users> userList = new ArrayList<Users>();
String sql = "select login_name,email,address,tel from users limit ?,?";
try
{
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, start);
pstmt.setInt(2, pageRecord);
rs = pstmt.executeQuery();
Users user = null;
while(rs.next())
{
user = new Users();
user.setLoginName(rs.getString("login_name"));
user.setEmail(rs.getString("email"));
user.setAddress(rs.getString("address"));
user.setTel(rs.getString("tel"));
userList.add(user);
}
} catch (SQLException e)
{
e.printStackTrace();
}
finally
{
DBUtil.close(rs);
DBUtil.close(pstmt);
DBUtil.close(conn);
}
return userList;
}
分页的action:
- public class PageAction extends Action
- {
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception
- {
- response.setContentType("text/html");
- response.setCharacterEncoding("utf-8");
- //当前页
- String currentPageStr = request.getParameter("pageNo");
- int currentPage=0;
- //每页显示的记录数
- int pageSize = 10;
- try
- {
- currentPage =Integer.parseInt(currentPageStr);
- }
- catch(NumberFormatException e)
- {
- currentPage = 1;
- }
- //在数据库中从第几条开始
- int start = (currentPage -1) * 10;
- //在数据库中已分页的数据集合
- List<Users> list = DaoFactory.getUsersDaoInstance().getPage(start, pageSize);
- //所有记录的集合
- List<Users> allRecordList = DaoFactory.getUsersDaoInstance().getAll();
- //所有记录数
- int allRecord = allRecordList.size();
- //总页数
- int totalPage = allRecord % pageSize==0?allRecord/pageSize : allRecord/pageSize + 1;
- List<Users> l = new ArrayList<Users>();
- Users user = null;
- for(Users u : list)
- {
- user = new Users();
- user.setLoginName(u.getLoginName());
- user.setEmail(u.getEmail());
- user.setTel(u.getTel());
- user.setAddress(u.getAddress());
- l.add(user);
- }
- //总记录数
- request.getSession().setAttribute("allRecord", allRecord);
- //总页数
- request.getSession().setAttribute("totalPage", totalPage);
- //当前页数
- request.getSession().setAttribute("currentPage", currentPage);
- request.getSession().setAttribute("list", l);
- return mapping.findForward("success");
- }
- }
前台页面代码:
- <table align="center" border="0">
- <tr>
- <td width="76%">
- <font size=4>总共${allRecord}条记录 - 当前页${currentPage }/总页数${totalPage }:</font>
- </td>
- </tr>
- <tr>
- <c:if test="${currentPage<=1}">
- 首页
- </c:if>
- <c:if test="${currentPage>1}">
- <a href="page.do?pageNo=1">首页</a>
- </c:if>
- <c:if test="${currentPage<totalPage}">
- <a href="page.do?pageNo=${currentPage +1}"+>下一页</a>
- </c:if>
- <c:if test="${currentPage>=totalPage}">
- 下一页
- </c:if>
- <c:if test="${currentPage<=1}">
- 上一页
- </c:if>
- <c:if test="${currentPage>1}">
- <a href="page.do?pageNo=${currentPage -1 }">上一页</a>
- </c:if>
- <c:if test="${currentPage>=totalPage}">
- 尾页
- </c:if>
- <c:if test="${currentPage<totalPage}">
- <a href="page.do?pageNo=${totalPage}">尾页</a>
- </c:if>
- </tr>
- </table>
- <table border="2" align="center">
- <tr>
- <td>用户名</td>
- <td>email</td>
- <td>电话</td>
- <td>地址</td>
- </tr>
- <c:forEach items="${list}" var="l">
- <tr>
- <td>${l.loginName}</td>
- <td>${l.email }</td>
- <td>${l.tel }</td>
- <td>${l.address }</td>
- </tr>
- </c:forEach>
- </table>
<table align="center" border="0">
<tr>
<td width="76%">
<font size=4>总共${allRecord}条记录 - 当前页${currentPage }/总页数${totalPage }:</font>
</td>
</tr>
<tr>
<c:if test="${currentPage<=1}">
首页
</c:if>
<c:if test="${currentPage>1}">
<a href="page.do?pageNo=1">首页</a>
</c:if>
<c:if test="${currentPage<totalPage}">
<a href="page.do?pageNo=${currentPage +1}"+>下一页</a>
</c:if>
<c:if test="${currentPage>=totalPage}">
下一页
</c:if>
<c:if test="${currentPage<=1}">
上一页
</c:if>
<c:if test="${currentPage>1}">
<a href="page.do?pageNo=${currentPage -1 }">上一页</a>
</c:if>
<c:if test="${currentPage>=totalPage}">
尾页
</c:if>
<c:if test="${currentPage<totalPage}">
<a href="page.do?pageNo=${totalPage}">尾页</a>
</c:if>
</tr>
</table>
<table border="2" align="center">
<tr>
<td>用户名</td>
<td>email</td>
<td>电话</td>
<td>地址</td>
</tr>
<c:forEach items="${list}" var="l">
<tr>
<td>${l.loginName}</td>
<td>${l.email }</td>
<td>${l.tel }</td>
<td>${l.address }</td>
</tr>
</c:forEach>
</table>