评论

收藏

[JSP] jsp页面数据分页模仿百度分页效果(实例讲解)

开发技术 开发技术 发布于:2021-10-20 16:42 | 阅读数:480 | 评论:0

废话不多说,直接上代码
请根据自己的项目、包名修改
<%@page import="web09.shop.DBUtil"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>数据分页</title>
  <style type="text/css">
  .page a{
    min-width: 34px;
    height: 34px;
    border: 1px solid #e1e2e3;
    cursor: pointer;
    display:block;
    float: left;
    text-decoration: none;
    text-align:center;
    line-height: 34px;    
  }
  
  .page a:HOVER {
    background: #f2f8ff;
    border: 1px solid #38f ;
  }
  .page a.prev{
    width:50px;
  }
  .page span{
    width: 34px;
    height: 34px;
    border: 1px solid transparent;
    cursor: pointer;
    display:block;
    float: left;
    text-decoration: none;
    text-align:center;
    line-height: 34px;
    cursor: default;
  }
  </style>
</head>
<body>
<table class="tt" border="1" align="center" width="80%" cellpadding="10">
  <tr>
  <th>ID</th>
  <th>姓名</th>
  <th>年龄</th>
  <th>专业</th>
  </tr>
  <%
  DBUtil dbutil=new DBUtil();
  Connection conn=dbutil.getCon();
  //Connection conn = new DBUtil().getCon();
  PreparedStatement pstmt1 = conn.prepareStatement("select count(*) from student");
  ResultSet rs1 = pstmt1.executeQuery();
  rs1.next();
  int recordCount = rs1.getInt(1);   //记录总数
  int pageSize = 10;      //每页记录数
  int start=1;      //显示开始页
  int end=10;        //显示结束页
  int pageCount = recordCount%pageSize==0 ? recordCount/pageSize : recordCount/pageSize+1; 
  int currPage = request.getParameter("p")==null ? 1 : Integer.parseInt(request.getParameter("p"));
  
  currPage = currPage<1 ? 1 : currPage;
  currPage = currPage>pageCount ? pageCount : currPage;
  
  PreparedStatement pst = conn.prepareStatement("select * from student limit ?,?");
  pst.setInt(1,currPage*pageSize-pageSize);
  pst.setInt(2,pageSize);
  ResultSet rs = pst.executeQuery();
  
  while(rs.next()){
  %>
  <tr align="center">
  <td><%=rs.getInt(1) %></td>
  <td><%=rs.getString(2) %></td>
  <td><%=rs.getInt("age") %></td>
  <td><%=rs.getString(4) %></td>
  </tr>
  <%
  }
  %>
  <tr>
   <th colspan="4" class="page">
     <% 
     out.print(String.format("<a class="prev" href="?p=%d">首页</a>",1));
     if(currPage>=7){
       start=currPage-5;
       end=currPage+4;
     }
     if(start>(pageCount-10)){
       start=pageCount-9;
     }
     if(currPage>1){
       out.print(String.format("<a class="prev" href="?p=%d">上一页</a>",currPage-1));
     }
     
     for(int i=start;i<=end;i++){
       if(i>pageCount) break;
       String pageinfo=String.format("<a href="?p=%d">%d</a>",i,i);
       if(i==currPage){
       pageinfo=String.format("<span>%d</span>",i);
       }
       out.print(pageinfo);
     }
     
     if(currPage<=pageCount){
       out.print(String.format("<a class="prev" href="?p=%d">下一页</a>",currPage+1));
     }
     
     out.print(String.format("<a class="prev" href="?p=%d">尾页</a>",pageCount)); 
     %>
   </th>
   </tr>
</table>
</body>
</html>
以上这篇jsp页面数据分页模仿百度分页效果(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持CodeAE代码之家

关注下面的标签,发现更多相似文章