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. SQL 汉字转换成拼音首字母 首字母查

    -- ============================================= -- 功能:汉字转换成拼音首字母 首字母查 -- ========================== ...

  2. [POJ1222]EXTENDED LIGHTS OUT(高斯消元,异或方程组)

    题目链接:http://poj.org/problem?id=1222 题意:开关是四连通的,每按一个就会翻转自己以及附近的四个格(假如有).问需要翻转几个,使他们都变成关. 把每一个灯看作一个未知量 ...

  3. [51NOD1959]循环数组最大子段和(dp,思路)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050 这道题的最大子段和有两种可能,一种是常规的子段和,另一种 ...

  4. 访问者模式,visitor

    定义: 表示作用于某对象结构中的各个元素的操作. 可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 前提: 适用于数据结构(Element)相对稳定的系统,这样visitor中的方法就是稳定 ...

  5. ironpython 2.75 在c#中的使用

    ironpython的介绍请自行搜索. 一句话,python是一个类似lua js的动态预言.ironpython是在net环境执行python的类库. 效果:在网站中调用一个python文件test ...

  6. NSKeyedArchive(存储自定义对象)

    在viewController.m中: - (void)viewDidLoad { [super viewDidLoad]; ZWPerson *p = [[ZWPerson alloc] init] ...

  7. Spring的DI(Ioc) - 利用构造器注入

    1: 在给对象提供构造器 public class PersonServiceImpl implements PersonService { private PersonDao personDao; ...

  8. iOS - Block 代码块

    1.Block Block 是一段预先准备好的代码,可以在需要的时候执行,可以当作参数传递.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.Block 是 C 语言的, ...

  9. eclipse查看jdk源码,及反编译查看

    jdk中的包: dt.jar是关于运行环境的类库,主要是swing的包 tools.jar是关于一些工具的类库 rt.jar包含了jdk的基础类库,也就是你在java doc里面看到的所有的类的cla ...

  10. poj 1144 Network(无向图求割顶数)

    题目链接:poj 1144 题意就是说有 n(标号为 1 ~ n)个网点连接成的一个网络,critical places 表示删去后使得图不连通的顶点,也就是割顶,求图中割顶的个数. 直接上大白书上的 ...