JSP+MYSQL进行分页

本文介绍了一种使用JSP和Servlet实现的分页查询功能,包括页面展示、跳转逻辑及后台数据处理流程。通过具体代码展示了如何从数据库获取分页数据并显示在网页上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP:

   <%
     ResultSet rs=(ResultSet)request.getAttribute("rs");
     
     int pageNum=(Integer)request.getAttribute("pageNumTo");
     int allNum = (Integer)request.getAttribute("allNum");
     int pagetNums=(Integer)request.getAttribute("pageNums");
    %>
    
  
    <h2 style="font-family: serif" align="center">分页总记录数:<%=allNum %></h2>
    <table align="center" width="100%" style="border: 1px solid">
     <thead align="center">
      <tr>
       <td>编号</td><td>姓名</td><td>年龄</td><td>爱好</td>
      </tr>
     </thead>
     <tbody align="center">
      <%
       while(rs.next()){
      %>
       <tr>
        <td><%=rs.getString(1) %></td><td><%=rs.getString(2) %></td>
        <td><%=rs.getString(3) %></td><td><%=rs.getString(4) %></td>
       </tr>
      <%
       }
      %>
     </tbody>
    </table>
    <h3 align="center">
     <a href="<%=path %>/servlet/FenYeServlet?pageNum=1">
      <s:if test="${pageNumTo != 1}">
       [首页]
      </s:if>
     </a>&nbsp;&nbsp;
     <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=pageNum==1?1:(pageNum-1) %>">
      <s:if test="${pageNumTo != 1}">
       [上一页]
      </s:if>
     </a>
     <s:if test="${pageNumTo eq 1}">
      <B><%=pageNum%>&nbsp;&nbsp;</B>
      <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum+1) %>"><%=(pageNum+1)%></a>&nbsp;&nbsp;
      <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum+2) %>"><%=(pageNum+2) %></a>……
     </s:if>
    
     <s:if test="${pageNumTo eq 2}">
      <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum-1) %>"><%=(pageNum-1) %>&nbsp;&nbsp;</a>
      <B><%=pageNum%>&nbsp;&nbsp;</B>
      <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum+1) %>"><%=(pageNum+1)%></a>&nbsp;&nbsp;
      <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum+2) %>"><%=(pageNum+2) %></a>……
     </s:if>
    
     <s:if test="${pageNumTo != 1 && pageNumTo !=2 && pageNumTo <= pageNums }">
      <s:if test="${pageNumTo > 3}">
       …
      </s:if>
     
      <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum-2) %>"><%=(pageNum-2) %>&nbsp;&nbsp;</a>
      <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum-1) %>"><%=(pageNum-1) %>&nbsp;&nbsp;</a>
      <B><%=pageNum%>&nbsp;&nbsp;</B>
     
      <s:if test="${pageNumTo < (pageNums-1)}">
       <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum+1) %>"><%=(pageNum+1)%></a>&nbsp;&nbsp;
       <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum+2) %>"><%=(pageNum+2) %></a>
     </s:if>
     
      <s:if test="${pageNumTo == (pageNums-1)}">
       <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=(pageNum+1) %>"><%=(pageNum+1)%></a>&nbsp;&nbsp;
   </s:if>
     <s:if test="${pageNumTo < (pageNums-2)}">
       …
      </s:if>
      <a href="<%=path %>/servlet/FenYeServlet?pageNum=<%=pageNum==pagetNums?pagetNums:(pageNum+1) %>">
       <s:if test="${pageNumTo != pageNums}">
        [下一页]
       </s:if>
      </a>&nbsp;&nbsp;
     </s:if>
   
     <a href="<%=path %>/servlet/FenYeServlet?pageNum=${pageNums}">
      <s:if test="${pageNumTo != pageNums}">
       [最后一页]
      </s:if>
     </a>
   
                 第&nbsp;<%=pageNum %>&nbsp;页
    
    </h3>
    <div align="center">
     <form action="<%=path %>/servlet/FenYeServlet" method="post">
      <input type="text" name="pageNum"/>
      <input type="submit" value="go"/>
     </form>
     ${msg }
  </div>

 

 

Servlet:

response.setContentType("text/html");
  request.setCharacterEncoding("UTF-8");
  TestDaoImple dao=new TestDaoImple();
     int allNum=dao.getAllCount();
     //总页数  pageNum:共分的分页   pageSize:每页3条记录
     String pageNum=request.getParameter("pageNum");
     
     ResultSet rs=null;
     int pageNumTo=1;
     int pageSize=5;
     int flag=allNum%pageSize;
     int num=allNum/pageSize;
     int pageNums=(flag==0?(num):(num+1));
     if(pageNum==null||pageNum==""){
      pageNumTo=1;
      rs = Utils.testFenYe(pageSize, 1);
      request.setAttribute("msg", "对不起,您的输入页数!!!");
     }else{
      try{
       pageNumTo=Integer.parseInt(pageNum);
       if(pageNumTo>pageNums||pageNumTo<1){
        request.setAttribute("msg", "对不起,您的输入范围超出,请您输入正确的数字!!!");
        pageNumTo=1;
       }
             
      }catch(NumberFormatException e){
       request.setAttribute("msg", "对不起,您的输入有误,请您输入正确的数字!!!");
      }
      rs= Utils.testFenYe(pageSize,pageNumTo);
     }
     request.setAttribute("pageNums", pageNums);
     request.setAttribute("pageNumTo", pageNumTo);
     request.setAttribute("rs", rs);
     request.setAttribute("allNum", allNum);
     request.getRequestDispatcher("/test.jsp").forward(request, response);

 

DAO:

public int getAllCount(){
  return Integer.parseInt(Utils.getAllCount());
 }
 public ResultSet getResultSet(){
  return Utils.getResultSet();
 }

 

JDBC:

public static ResultSet getResultSet(){
  String sql="select *from paginationdata";
  Connection con=null;
  Statement stmt=null;
  ResultSet rs=null;
  try {
   Class.forName("com.mysql.jdbc.Driver");
   con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
   stmt = con.createStatement();
   rs=stmt.executeQuery(sql);
   return rs;
  } catch (ClassNotFoundException e) {
   System.out.println("没有找到相关的驱动!!!");
   e.printStackTrace();
  } catch (SQLException e) {
   System.out.println("SQL JDBC连接出错了……");
   e.printStackTrace();
  }
  return null;
  
 }
 public static String getAllCount() {
  String sql="select count(*) from paginationdata";
  try {
   Class.forName("com.mysql.jdbc.Driver");
   Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
   Statement stmt = con.createStatement();
   ResultSet rs=stmt.executeQuery(sql);
   while(rs.next()){
    return rs.getString(1);
    //System.out.println(rs.getString(1));
   }
  } catch (ClassNotFoundException e) {
   System.out.println("没有找到相关的驱动!!!");
   e.printStackTrace();
  } catch (SQLException e) {
   System.out.println("SQL操作出错了……");
   e.printStackTrace();
  }
  return null;
 }
 public static ResultSet testFenYe(int pageSize , int pageNum) {
  //mysql里的分页查找
  String sql="select * from paginationdata order by id limit "+pageSize*(pageNum-1)+","+pageSize;
  //查出总记录数    
  //String sql1="select count(*) from paginationdata";
  //从第三条几记录开始取三条记录  注意不算第二条记录
  //String sql2="select * from paginationdata limit 2 , 3";
  //String sql="select *from paginationdata";
  Connection con=null;
  Statement stmt=null;
  ResultSet rs=null;
  try {
   Class.forName("com.mysql.jdbc.Driver");
   con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
   stmt = con.createStatement();
   rs = stmt.executeQuery(sql);
   return rs;
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
  
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值