分页算法应该在以后的开发中会经常用到。这里记录一下:
分页算法使用的底层实现是limit关键字。
public ArrayList<User> listUsers(int pagenow,int count) {
int start=(pagenow-1)*count;
String sql="select * from userM limit+"+start+","+count;
ResultSet resultSet=Conn.Select(sql);
ArrayList<User> list = new ArrayList<User>();
try {
while(resultSet.next())
{
int id = resultSet.getInt("id");
String name=resultSet.getString("username");
String password=resultSet.getString("password");
String question = resultSet.getString("question");
String anwser = resultSet.getString("answer");
int flag = resultSet.getInt("flag");
User user = new User(id,name,password,question,anwser,flag);
list.add(user);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
上面pagenow参数代表当前我们位于第一页.
start=(pagenow-1)*count;代表起始序号。
该程序只是实现了分页查询,那如何在jsp页面中显示出来呢?
下面是jsp页面文件:
<%@ page contentType="text/html;charset=utf-8"
import="java.util.*,com.dao.*,com.daolmpl.*,com.demo.*,com.model.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<form action=lists.jsp name=f method=post>
<table border=0 align=center>
<caption>用户信息显示</caption>
<tr bgcolor=#C7D7E7>
<th> </th>
<th>编号</th>
<th>姓名</th>
<th>密码</th>
<th>问题</th>
<th>答案</th>
<th>等级</th>
<th colspan=2>数据操作</th>
</tr>
<%
UserOplmpl op = new UserOplmpl();
ArrayList<User> list = op.listUsers();
int sum=list.size();
int count=3;
int pagesum=(sum-1)/count+1;
int pagenow;//记录是当前第几页;
if(request.getParameter("pagenow")!=null)
{
pagenow=Integer.parseInt(request.getParameter("pagenow"));
}
else
{
pagenow=1;
}
list=op.listUsers(pagenow,count);
request.setAttribute("list", list);
%>
<c:forEach items="${list }" var="user">
<tr><td><input type=checkbox name=op value=${user.id }></td><td>${user.id }</td>
<td>${user.name }</td>
<td>${user.password }</td>
<td>${user.question }</td>
<td>${user.answer }</td>
<td>${user.flag }</td>
<td><a href=modify.jsp?id=user.id>修改</a></td>
<td><a href=Delete?id=user.id>删除</a></td>
</tr>
</c:forEach>
<tr>
<td colspan=9 align=center>
<input type=button name=enter value=全部选中>
<input type=button name=enter value=全部取消>
<input type=button name=enter value=全部删除>
</td>
</tr>
</table>
<p align=center>
<%
if(pagenow!=1)
{
out.println("<a href=list.jsp?pagenow=1>第一页</a>\t");
}
else
{
out.println("第一页\t");
}
if(pagenow>1)
{
out.println("<a href=list.jsp?pagenow="+(pagenow-1)+">上一页</a>\t");
}
else
{
out.println("上一页\t");
}
if(pagenow<pagesum)
out.println("<a href=list.jsp?pagenow="+(pagenow+1)+">下一页</a>\t");
else
out.println("下一页\t");
if(pagenow!=pagesum)
out.println("<a href=list.jsp?pagenow="+pagesum+">最后一页</a>\t");
else
out.println("最后一页");
%>
共 <%=pagesum %> 页 当前是第 <%=pagenow %> 页 跳转到第 <select name=pagenow>
<%
for(int i=1;i<=pagesum;i++)
{
out.println("<option value="+i+">"+i+"</option>");
}
%>
</select>
页 <input type=submit name=enter value=跳转 onclick="jump()">
</p>
</form>
<script language="javascript">
function jump()
{
value=document.f.pagenow.value;
location.href="lists.jsp?pagenow="+value;
}
</script>