jsp-------------之分页技术(一)
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); %>
- <a href=wahaha.jsp?pagenow=<%=pagenow-1%> >【 上一页 】 </a>
- <%
- }else{
- %>
- <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-------------之分页技术(一)的更多相关文章
- JSP的分页技术
在实际应用中,如果从数据库中查询的记录特别的多,甚至超过了显示屏的显示范围,这个时候可将结果进行分页显示. 假设总记录数为intRowCount,每页显示的数量为inPageSize,总页数为intP ...
- Javaweb 第15天 web练习和分页技术
第15天 web练习和分页技术 复习day14内容: 学习新技术的思路? 分析功能的思路? 使用queryRunner操作数据库的步骤? ResultSetHandler接口常用实现类(三个重点)? ...
- 改进Spring中的分页技术
Spring中有一个PagedListHolder,能够实现分页. 但此类有几个缺点: 1. 使用此类的代码比較繁琐 2. 此类存放的数据源是全部的记录集,即对于记录数为1000条的数据,即使我们仅仅 ...
- JAVAEE之-----MySQL分页技术(带搜索)
需求: 为什么须要採用分页技术呢?在数据库中我们查询数据的时候,须要将数据返回到显示页面.数据库中含有大量数据,所有显示在一个页面过于太多,所以我们须要採用分页技术.每一页显示不同数据. 主要解决这个 ...
- Mysql学习总结(32)——MySQL分页技术详解
1.什么是数据分页:数据分页就是将很多条记录像书本一样分页,每页显示多少行记录: 2.为什么要数据分页:当我们进行sql语句查询时,假如数据有成千上万行记录,如果在同一个页面去显示,那这个页面得有多大 ...
- tp中使用分页技术
1 public function showList() { $m_ld = D ( 'guangxi_ld' ); $page = I ( 'get.p', 1 ); // 在配置中获取分页值 $p ...
- Servlet分页技术
这是看韩顺平老师的servlet视频,自己动手写的,楼主看韩顺平老师的servlet是2006制作的,用的是sql server数据库,自己又用的是oracle数据库,所以怕有的同学遇到同样的问题,不 ...
- 分页技术之PageDataSource类
之前给大家介绍了分页技术之Gridview控件,今天给大家介绍另外一种分页技术,采用PageDataSource类 + Repeater控件来实现. 前台只需要拖出一个Repeater控件来绑定要显示 ...
- 分页技术之GridView控件
GridView控件实现分页技术 第一步:设置GridView控件的属性,跟分页相关的属性设置如下: AllowPaging="true":允许分页, PageSize=" ...
随机推荐
- 【转】Ajax中send方法参数的使用(get/post)
Ajax中send方法参数的使用 一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null. 例如 : ...
- linux mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目 ...
- @JoinColumn
@OneToOne注释只能确定实体与实体的关系是一对一的关系,不能指定数据库表中的保存的关联字段.所以此时要结合@JoinColumn标记来指定保存实体关系的配置. @JoinColumn与本书上一章 ...
- [C和指针]第五部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- DataTable字符串类型的数字,按照数字类型排序
protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); ...
- nginx使用ssl模块配置HTTPS支持
默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中.通常这 ...
- JAVA中在Myeclipse里把表导入成相应的poco实体类
参考:地址: http://blog.csdn.net/jintaiyong/article/details/7383982
- iOS - Swift NSSize 尺寸
前言 结构体,这个结构体用来表示事物的宽度和高度. public typealias NSSize = CGSize public struct CGSize { public var width: ...
- [转载] google mock cookbook
原文: https://code.google.com/p/googlemock/wiki/CookBook Creating Mock Classes Mocking Private or Prot ...
- parseInt 的第二个参数
["1","2","3"].map(parseInt) //[1,NaN,NaN] ["1","2" ...