JSP实现HTML网页中分页查询Mysql数据库数据

5 篇文章 1 订阅
3 篇文章 1 订阅

JSP实现HTML网页中分页查询Mysql数据库数据主要有以下几个地方要注意:

  1. 使用rs的来计算页面数:
    rs.last();
    RowAmount = rs.getRow();
    计算数据库中数据最大页面数
    PageAmount = (RowAmount + PageSize - 1 )/ PageSize;
  1. 将rs指向指定页面
将当前的rs指针指向要显示的页面首条数据
    if(PageAmount > 0){
        rs.absolute((PageNow - 1)*PageSize + 1); 
    }
  1. 实现循环赋值
for(int i = 0 ; i < PageSize && !rs.isAfterLast(); i++){
        %>
        <tr>
        <td><%=rs.getString("id") %></td>
        <td><%=rs.getString("name") %></td>
        <td><%=rs.getString("age") %></td>
        <td><%=rs.getString("grade") %></td>
        <td><%=rs.getString("hobby") %></td>
        <td><a href='updateStu.jsp?pid=<%=rs.getString("id") %>'>修改</a>&nbsp;<a href='deleteStu.jsp?pid=<%=rs.getString("id") %>'>删除</a></td>
         </tr>
        <%
        rs.next();
    }
<%@page import="java.sql.Connection,java.sql.Statement,java.util.Scanner,java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<style>
   table{
          border-collapse: collapse;
          border: none;
          width: 700px;
   }
   td,th{
          border: solid grey 1px;            
          margin: 0 0 0 0;
          padding: 5px 5px 5px 5px 
  }
  .c1 {
    width:100px
  }
  .c2 {
    width:200px
  }
  .c3 {
    width:100px
  }
  .c4 {
    width:100px
  }
  .c5 {
    width:100px
  }
  .c6 {
    width:100px
  }
  a:link,a:visited {
    color:blue
  }

  .container{  
    margin:0 auto;   
    width:700px;  
    text-align:center;  
  }  

</style>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<div class="container">
      <h1>浏览学生名单</h1>  
      <table>
      <tr>
        <th class='c1'>学号</th>
        <th class='c2'>姓名</th>
        <th class='c3'>年龄</th>
        <th class='c4'>年级</th>
        <th class='c5'>爱好</th>
        <th class='c6'>-</th>
      </tr>

<%
String pgno = "";  //网址中传递的页面数据
String pgcnt = ""; //网址传递的每页最大显示数目
int RowAmount = 0; //数据库中总的行数
int PageAmount = 0; //数据库所有页面可以组成多少个页面
int PageSize; //每页最大显示数目
int PageNow;  //当前页面
ResultSet rs;
if(request.getParameter("pgno")!=null){  //获取网址从传递的数据
    pgno = request.getParameter("pgno");
}else{
    pgno = "1";  //赋给初始值防止没有传入数据时崩溃
}
PageNow = java.lang.Integer.parseInt(pgno);
if(PageNow <= 0){
    PageNow = 1;
}

if(request.getParameter("pgcnt")!=null){
    pgcnt = request.getParameter("pgcnt");
}else{
    pgcnt = "4";
}
PageSize = java.lang.Integer.parseInt(pgcnt); //**转换为int类型**

**连接数据库**
try{
    String connectString = "jdbc:mysql://localhost/test"
            + "?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8";
    String user = "root";
    String pwd = "mysql";
    String sql = "select *from stu;";
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection(connectString, user, pwd);

    Statement state = conn.createStatement();
    rs = state.executeQuery(sql);
    获取数据库行数
    rs.last();
    RowAmount = rs.getRow();
    计算数据库中数据最大页面数
    PageAmount = (RowAmount + PageSize - 1 )/ PageSize;
    if(PageNow > PageAmount){
        PageNow = PageAmount;
    }
    将当前的rs指针指向要显示的页面首条数据
    if(PageAmount > 0){
        rs.absolute((PageNow - 1)*PageSize + 1); 
    }
    循环获取数据
    for(int i = 0 ; i < PageSize && !rs.isAfterLast(); i++){
        %>
        <tr>
        <td><%=rs.getString("id") %></td>
        <td><%=rs.getString("name") %></td>
        <td><%=rs.getString("age") %></td>
        <td><%=rs.getString("grade") %></td>
        <td><%=rs.getString("hobby") %></td>
        <td><a href='updateStu.jsp?pid=<%=rs.getString("id") %>'>修改</a>&nbsp;<a href='deleteStu.jsp?pid=<%=rs.getString("id") %>'>删除</a></td>
         </tr>
        <%
        rs.next();
    }
    rs.close();
    state.close();
    conn.close();
    }catch (Exception e){
    e.printStackTrace();
}
%>    
      </table>
      <br><br>  
      <div style="float:left">
         <a href="addStu.jsp">新增</a>
      </div>
      <div style="float:right">
      要更新网址中传递的参数
        <a href="browseStu.jsp?pgno=<%=PageNow-1 %>&pgcnt=4">
                        上一页</a>    &nbsp;               
        <a href="browseStu.jsp?pgno=<%=PageNow+1 %>&pgcnt=4">
                       下一页</a>
      </div>
      <br><br>
      <br><br>

      <p>PageAmount:<%=PageAmount %> RowAmount:<%=RowAmount %></p>  
      <p>PageNow:<%=PageNow%></p>

  </div>
  <pre>
     数据库名为test,登录用户为"user",密码为="123456". 
     表名为"stu",字段:id int 自动递增 主键,num varchar(32),name varchar(32)
     为stu建一个唯一性索引,字段为num,即要求num唯一
   </pre> 

</body>
</html>

示例:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值