java+jsp 分页显示数据库表中的结果集

2025-09-27 06:10:25

1、java代码后台方面:

  第一步、查询数据库中某张表中数据的总条数;

  目的:

  知道总页数

  如果每页显示9条,总页数=总条数/9+1;

java+jsp 分页显示数据库表中的结果集

2、Java代码后台方面:

第二步骤、分析jsp页面传递值的可能性

1、可能是Null

原因:第一次从其他页面跳转到jsp分页显示的页面的时候

2、可能>总页面

原因 :页面已经是最后一页了,再点击下一页就会出现这个情况

3、可能<0

原因:已经是第一页了,再点击上一页就出现这个情况

java+jsp 分页显示数据库表中的结果集

3、第三步、分页查询数据库

       首先我们来看一下,sql语句中分页查询是什么样的,需要什么参数

      // sql语句的意思就是limit 索引,显示索引以后多少行        String sql = "select * from person_info limit ?,?";

     需要传递两个参数,一个是开始索引,一个是查询的长度

java+jsp 分页显示数据库表中的结果集

4、Java代码后台方面

  我们刚才说到查询的两个参数,一个是开始索引,一个是结束的索引

开始索引= 每页显示的固定页数 * (当前页面 - 1);

 结束索引= 开始索引+ (每页显示的固定页面 - 1);

注意:如果到了最后一页的时候,结束索引=总页面 - 开始索引;

举个例子说明

一个表中的数据是52条,每页显示10条,需要6页,到了最后一页的时候,只有两条数据了!

java+jsp 分页显示数据库表中的结果集

5、java后台部分:

把当前页面、页面显示的数据、总页数传递到jsp页面

1、jsp页面主要负责显示数据、显示当前页、显示总页数,提供上一页、下一页的连接就可以了;

java+jsp 分页显示数据库表中的结果集

java+jsp 分页显示数据库表中的结果集

1、servlet代码

package cn.com.servlet;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.com.jdbc.JdbcUtils_DBCP;import cn.com.pack.Person_info;public class Personnel_definition extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // 查询数据库里面数据的总条数        // 1.数据库里面数据的总条数;        int countpage = 0;        String sql0 = "select * from person_info";        Connection conn = null;        PreparedStatement ps = null;        ResultSet rs = null;        try {            conn = JdbcUtils_DBCP.getConnection();            ps = conn.prepareStatement(sql0);            rs = ps.executeQuery();            while (rs.next()) {                countpage++;            }        } catch (SQLException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        } finally {            JdbcUtils_DBCP.release(conn, ps, rs);        }        // 每页显示多少行        int limt = 10;        // 2.如果一页是10条数据的话,那么就是all页        int all = (countpage / limt) + 1;        // 这个是从前台获取的数据,是上一页还是下一页        int cpage = 1;        // 这个是上一页还是下一页的数据        String currentpage = request.getParameter("currentpage");        if (currentpage == null || currentpage == "") {            cpage = 1;        } else {            cpage = Integer.parseInt(currentpage);            // 如果到了最后一页,用户再点击下一页的时候跳转到第一页            if (cpage == (all + 1)) {                cpage = 1;                // 如果到了第一页,用户再点击下一页的时候跳转到最后一页            } else if (cpage == 0) {                cpage = all;            }        }        // 3.开始查询的数据        int start = limt * (cpage - 1);        // 4.结束查询的数据        int end = start + (limt - 1);        Connection conn1 = null;        PreparedStatement ps1 = null;        ResultSet rs1 = null;        // 这个代码是查询数据库里面的person_info,然后循环遍历显示在页面上        // 如果到了最后一页的时候,        if (end > countpage) {            limt = countpage - start;        }        // sql语句的意思就是limit 索引,显示索引以后多少行        String sql = "select * from person_info limit ?,?";        ArrayList<Person_info> list = new ArrayList<Person_info>();        try {            conn1 = JdbcUtils_DBCP.getConnection();            ps1 = conn1.prepareStatement(sql);            ps1.setLong(1, start);            ps1.setLong(2, limt);            rs1 = ps1.executeQuery();            while (rs1.next()) {                // 把获取的值放在pi里面,再把pi放在集合里面                Person_info pi = new Person_info(rs1.getString(1),                        rs1.getString(2), rs1.getString(3), rs1.getString(4),                        rs1.getString(5), rs1.getString(6));                list.add(pi);            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            JdbcUtils_DBCP.release(conn1, ps1, rs1);        }        request.setAttribute("list", list);        request.setAttribute("cpage", cpage);        request.setAttribute("all", all);        request.setAttribute("address", "/BootStrap/Personnel_definition");        request.getRequestDispatcher("Personnel_definition.jsp").forward(                request, response);    }}

java+jsp 分页显示数据库表中的结果集

2、jsp代码

<table class="table table-striped">            <thead>                <tr>                    <th>人员名称</th>                    <th>人员编号</th>                    <th>所属部门</th>                    <th>所属工种</th>                    <th>职务</th>                    <th>启用状态</th>                    <th><a href="Personnel_add.jsp">【添&nbsp;&nbsp;&nbsp;&nbsp;加】                    </a></th>                </tr>            </thead>            <tbody>                <c:forEach items="${list}" var="i" varStatus="status">                    <tr style="background-color: white">                        <td class="list_p">${i.name}</td>                        <td class="list_p">${i.number}</td>                        <td class="list_p">${i.part}</td>                        <td class="list_p">${i.kinds}</td>                        <td class="list_p">${i.duty}</td>                        <td class="list_p">${i.state}</td>                        <td class="list_p"><a                            href="/BootStrap/Person_edit?name=${i.name}&&number=${i.number}">【编辑</a>|                            <a                            href="/BootStrap/Person_delete?name=${i.name}&&number=${i.number}">删除</a>】</td>                    </tr>                </c:forEach>                <tr>                    <td><a                        href="<%=request.getAttribute("address") %>?currentpage=${cpage-1}&&sqls=<%=request.getParameter("sql")%>">上一页</a></td>                    <td>第${cpage}页</td>                    <td><a                        href="<%=request.getAttribute("address") %>?currentpage=${cpage+1}&&sqls=<%=request.getParameter("sql")%>">下一页</a></td>                    <td>总共<%=request.getAttribute("all")%>页                    </td>                </tr>            </tbody>        </table>

java+jsp 分页显示数据库表中的结果集

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢