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

 时间:2024-10-13 06:43:11

web项目中最常见的就是动态显示数据库里面的结果集了,但是如果数据库表中的数据量比较大的话,显示在jsp页面上就会很长,不美观!因此,掌握分页查询是非常重要。后端的语言是java,前台显示是jsp。其他语言的同志可以搜搜其他的经验了。

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

工具/原料

Myeclipse

浏览器

电脑

java后台

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页面

jsp页面

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

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

完整代码部分

1、servlet代码package cn.罕铞泱殳com.servlet;import java.io.IOExc髫潋啜缅eption;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代码<ta水瑞侮瑜ble 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 分页显示数据库表中的结果集
  • 火影忍者ol暗部行动组队副本怎么打
  • 剑网3怀旧服修为获取方法大全
  • Apache安装教程
  • 如何查看oracle字符集
  • eclipse把项目部署到Tomcat服务器上
  • 热门搜索
    清明节手抄报图片简单 关于古诗词的手抄报 感恩节的手抄报 校园手抄报内容 关于健康的手抄报内容 诚实守信手抄报内容 孝敬父母手抄报 关于奥运会的手抄报 儿童手抄报模板 小手牵大手手抄报