jsp分页技术之:

如下图:百度的喵

看上图中卡哇伊的小苗的爪子下面的数字,就是分页啦!那我们如何做出这样一个效果呢? 下面我们来逐一分解:

jsp分页技术一 :  (算法)

 /*
int pageSize // 每一页显示多少条记录
int pageNow // 希望显示第几页
int pageCount //一共多少页
int rowCount //一共有多少条记录 说明:
pageSize : 是指定的pageNow是用户选择的rowCount是从表中查询得到的
rowCount : 是从表中查询得到的
pageCount : 是从计算出来的,该计算公式如下: 核心代码:
*/
pageCount = rowCount /pageSize;
if(rowCount % pageSize ==)pageCount++;
/*
举例说明:
有用户表共九条记录:
rowCount = 9 ;
每页显示3条记录:pageSize = 3;
那么更具我们的算法:
pageCount =3; (恰好)
如果每页显示4条记录
pageSize = 4 ; 那么最后一页只有一条记录
*/

基于这个算法,其实我们应该比较好构造出一个jsp+Servlet的分页技术,(╯‵□′)╯︵┻━┻现在就让本渣来展示一二,哦呼呼!额, 可能有jsp大家,会拿着砖块拍本渣的头,说,你丫的,需要这么复杂吗? 数据库中不是提供了这样的语句查询吗?

本渣还是幽幽的带着怨恨的眼神, 曰: “小可”,你可知道万一你查询的数据库的编码iD不连续咋个办?  需要承认的是,数据库也能做到这点,但是,“咳,咳,咳,如果有如下数据,就不大好处理鸟”

举个栗子:

1  王二小  12

2  王三小  13

4   张小明  14

5   葫芦娃   7

然后你想以一页三行的方式分页

如果有MYsql数据库的话,  用这样的语句:  select  * from user  limit  start , num ;

然后你会发现,每一页都只有两行,因为编号为3的数据缺失啦!

下面这个方法(为了简化,写一个纯jsp文件):

代码:

 <%@page import="java.sql.ResultSetMetaData"%>
<%@page import="java.sql.DriverManager"%>
<%@page import = "java.sql.PreparedStatement"%>
<%@page import = "java.sql.Connection"%>
<%@page import = "java.sql.ResultSet" %>
<%@ page language = "java" import="java.util.*" pageEncoding="UTF-8"%> <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>分页显示</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<%
int default_size =3;
int pageCount=0; //页面总数
int rowCount=0; //行数统计
int pagenow=0; //当前页面
int pageSize=default_size; //页面的显示数目
String Driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/myshop";
String sql = "";
Connection ct=null ;
PreparedStatement pst=null;
ResultSet rs=null;
ResultSetMetaData rsmd =null;
Class.forName(Driver);
ct = DriverManager.getConnection(url,"root","123");
//第一次: 统计书本的种类数
sql = "select count(*) from book ;";
pst = ct.prepareStatement(sql);
rs = pst.executeQuery();
//或的网页总数
while(rs.next())
pageCount=rs.getInt(1);
String usernow = request.getParameter("pagenow");
if(usernow != null && !usernow.isEmpty() ){
pagenow = Integer.parseInt(usernow);
}
sql ="select * from book limit "+pagenow*pageSize+","+pageSize;
pst = ct.prepareStatement(sql);
rs = pst.executeQuery();
rsmd = rs.getMetaData();
%>
<%-- 将所有的页面全部用一个页面来显示 --%>
<hr>
<body>
<table border="2" >
<tr>
<td> 书籍编号 </td><td> 书籍名称 </td>
<td> 书籍作者 </td><td> 书籍出版社 </td>
<td> 价 格 </td><td> 书籍数量 </td>
</tr>
<%
int col = rsmd.getColumnCount();
while(rs.next()){
%>
<tr>
<%
for(int i=1; i<=col ;i++){
%>
<td><%=rs.getString(i)%></td>
<% } %>
</tr>
<% } %>
</table> <hr>
<%
if(pagenow>0) {
%>
<%System.out.println("pagenow_1"+pagenow); %>
&nbsp;&nbsp;<a href=wahaha.jsp?pagenow=<%=pagenow-1%> >【 上一页 】 </a>
<%
}else{
%>
&nbsp;&nbsp;<a href=wahaha.jsp?pagenow=<%=pagenow%> >【 上一页 】 </a>
<%
}
%>
<%
int useID=0;
int pagenum = pageCount/pageSize ;
if( pageCount % pageSize != 0 ) pagenum++ ;
for( useID=1 ; useID<=pagenum ; useID++ ){
%>
<a href=wahaha.jsp?pagenow=<%=useID-1 %> >【<%=useID %>】</a>
<%
}
if( pagenow +1<pagenum ){
%> <a href=wahaha.jsp?pagenow=<%=1+pagenow%> >【 下一页 】 </a>
<% }else{ %>
<a href=wahaha.jsp?pagenow=<%=pagenow%> >【 下一页 】 </a>
<% }%>
</body>
</html>

下面是效果图:

     

jsp-------------之分页技术(一)的更多相关文章

  1. JSP的分页技术

    在实际应用中,如果从数据库中查询的记录特别的多,甚至超过了显示屏的显示范围,这个时候可将结果进行分页显示. 假设总记录数为intRowCount,每页显示的数量为inPageSize,总页数为intP ...

  2. Javaweb 第15天 web练习和分页技术

    第15天 web练习和分页技术 复习day14内容: 学习新技术的思路? 分析功能的思路? 使用queryRunner操作数据库的步骤? ResultSetHandler接口常用实现类(三个重点)? ...

  3. 改进Spring中的分页技术

    Spring中有一个PagedListHolder,能够实现分页. 但此类有几个缺点: 1. 使用此类的代码比較繁琐 2. 此类存放的数据源是全部的记录集,即对于记录数为1000条的数据,即使我们仅仅 ...

  4. JAVAEE之-----MySQL分页技术(带搜索)

    需求: 为什么须要採用分页技术呢?在数据库中我们查询数据的时候,须要将数据返回到显示页面.数据库中含有大量数据,所有显示在一个页面过于太多,所以我们须要採用分页技术.每一页显示不同数据. 主要解决这个 ...

  5. Mysql学习总结(32)——MySQL分页技术详解

    1.什么是数据分页:数据分页就是将很多条记录像书本一样分页,每页显示多少行记录: 2.为什么要数据分页:当我们进行sql语句查询时,假如数据有成千上万行记录,如果在同一个页面去显示,那这个页面得有多大 ...

  6. tp中使用分页技术

    1 public function showList() { $m_ld = D ( 'guangxi_ld' ); $page = I ( 'get.p', 1 ); // 在配置中获取分页值 $p ...

  7. Servlet分页技术

    这是看韩顺平老师的servlet视频,自己动手写的,楼主看韩顺平老师的servlet是2006制作的,用的是sql server数据库,自己又用的是oracle数据库,所以怕有的同学遇到同样的问题,不 ...

  8. 分页技术之PageDataSource类

    之前给大家介绍了分页技术之Gridview控件,今天给大家介绍另外一种分页技术,采用PageDataSource类 + Repeater控件来实现. 前台只需要拖出一个Repeater控件来绑定要显示 ...

  9. 分页技术之GridView控件

    GridView控件实现分页技术 第一步:设置GridView控件的属性,跟分页相关的属性设置如下: AllowPaging="true":允许分页, PageSize=" ...

随机推荐

  1. maven入门教程

    一.Maven 是什么? Maven 英文名称:专家,由名字可见,这个工具野心非常大.有人说他是"构建工具",一个用来把源代码构建成可发布的构件的工具.也有人说是项目管理工具. 官 ...

  2. Ajax发送POST请求的心路历程

    好多年前就在项目中用ajax实现了页面部分数据的发送,当时用的是GET方法. 这次用POST方法实现同样的功能,竟然花费了不少的时间! ① 关于JQuery ajax的配置项说明 url : 请求的u ...

  3. Mybatis的二级缓存配置

    一个项目中肯定会存在很多共用的查询数据,对于这一部分的数据,没必要每一个用户访问时都去查询数据库,因此配置二级缓存将是非常必要的.  Mybatis的二级缓存配置相当容易,要开启二级缓存,只需要在你的 ...

  4. Shared Assembilies and Strongly Named Assemblies

    the .NET Framework has in place to deal with versioning problems. Two Kinds of Assemblies, Two Kinds ...

  5. "npm ERR! Error: EPERM: operation not permitted"问题解决

    在基于macaca进行自动化测试的时候,遇到如下问题: E:\AutoTest\Macaca\LocalTEST\macaca-test-sample\macaca-test>macaca do ...

  6. ASP.Net MVC4中封装CSS和js冗余代码(不让其大篇的显示在前台上)

    (1)封装CSS和JS代码,使用调用的方式在前台进行调用.是开发看起来简洁和易于管理,可达到重用.   由于asp.netMVC4 框架 ,在封装js和CSS的时候,有如下规范: using Syst ...

  7. 百度编辑器Ueditor的简单调用

    先去ueditou.baidu.com网站下载百度编辑器,放到项目根目录下的Data目录中,然后引入文件 <!DOCTYPE html> <html lang="en&qu ...

  8. 【Todo】【读书笔记】机器学习实战(Python版)

    还是把这本书的读书笔记,单独拎出来吧,因为内容比较多. P38. Logistic 回归. 觉得还蛮实用的.囫囵吞枣看的.要细看.

  9. you don't have permission to view it 解决

    the file couldn't be opened because you don't have permission to view it   简单设置下面的选项即可,不要谢我啊! change ...

  10. Java Base64编码解码实现

    我尝试过两种方式:java自带的sun.misc的工具类,还有commons-codec.jar 1.sun.misc的工具类 String encoderStr = null; BASE64Enco ...