分页显示算法

分页算法应该在以后的开发中会经常用到。这里记录一下:

分页算法使用的底层实现是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>&nbsp</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>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值