后台数据库是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;
}
分页的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>