一、概述

首先,我们要明确为何需要分页技术,主要原因有以下:

1、分页可以提高客户体验度,适当地选择合适的数据条数,让页面显得更有条理,使得用户体验感良好,避免过多数据的冗余。

2、提高性能的需要。分页技术,有选择的加载某部分数据,在数据量较大的时候,分部分加载数据、显示数据,可以有效提高程序的性能,当然,单纯的js的分页技术并没有这种效果。

所以,分页技术是web技术中比较常用的技术,而下面讨论的主要是两种分页技术:一种是jsp的分页技术,其读取数据分批次读取,操作页数跳转的时候才加载相应页面的数据;另一种js分页技术是一次性全部加载数据,然后利用js对页面进行数据显示与否分页面操作,是种假的分页技术。第一中技术比较高性能和常用,所以下面重点讨论jsp分页技术。

二、jsp分页的技术的实现过程

1、主要步骤:

首先,通过sql数据来计算数据库中的数据条数,具体的代码如下

String sql_count = "select count(*) from article a where 1=1";
//然后通过数据库操作获取总条数count
int count = 0;
//(数据库连接过程省略)
Result rs = stmt.executeQuery(sql_count);
if(rs.next()){
count = rs.getInt(1);
}

注意,这里有个小小的细节:where 1=1的作用是什么?

初看这个条件好像是多于的,但是,其实它对于拼接sql字符有很方便的作用,这是为了方便在拼接字符时出现条件判断的时候无法判断下一个是否需要拼接where字符,所以统一用在这之前加一个“多于”的where 1=1方便操作。

2、算好总数据条数之后,我们就可以根据每页条数进行总页数等变量的计算了,具体请看一下代码

//根据总条数来进行计算相关分页的数据
//定义相关变量
int pages = 0; //当前页码数
int totalPages = 0; //总页数
int limit = 5; //每页的条数
//计算
if(count%limit==0){
totalPages = count/limit
}else{
totalPages = count/limit + 1;
}

  以上并没有涉及新技术,具体请参考代码

3、最后,就是页面的前端操作了,具体就不累赘了。

其实总的来说,jsp分页的技术并没有什么新的技术在里面,纯粹是各种基本的知识来实现的,所以以上的总结显得比较简单。

三、简单说完jsp的分页操作之后,我们再说说js如何在前端页面实现操作的手段,具体的话各位观看一下的例子就大概明白啦

1、首先,一下的代码的测试js方法的代码

<html>
<head>
<script type="text/javascript" src="paging.js">
</script>
</head>
<body onLoad="page_separate(0);">
<div id="test1">
<table id="table_test" width="60%">
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td>00asdf</td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
</table>
</div>
</body> <div width="60%">
<form id="paging" method="post" action="#" onsubmit="return checkNum();"> </form>
</div>
<!--页数显示的div-->
<div id="page_count" name="page_count"></div> </html>

2、以下是相关的js代码,里面实现了js的分页功能

/*
*该函数的参数说明:参数是个数字,不同数字代表跳到不同的页数或者不同的页面操作
*其中,-1代表跳转到首页,-2代表跳转到尾页,-3代表上一页,-4代表下一页,-5代表跳页
*其余数字均表示跳转到对应数字的页码
*/
//全局变量存储当前页数和总页数
var pages = 1;
var totalPages = 1;
function page_separate(do_what){
//定义所有与分页有关的变量
var count = 0;//总条数
//var totalPages = 1;//总页数
var limit = 4;//每页显示数
//var pages = 1;//当前页数 //获取表格信息
var row_table = document.getElementById("table_test").rows;
count = row_table.length;
if(count%limit==0){
totalPages = count/limit;
}else{
totalPages = parseInt(count/limit) + 1;
} //根据do_what参数进行对应操作
if(do_what==-1){
pages=1;
}else if(do_what==-2){
pages=totalPages;
}else if(do_what==-3){
if(pages==1){
alert("已到达首页!");
return ;
}else{
pages = pages-1;
}
}else if(do_what==-4){
if(pages==totalPages){
alert("已到达尾页!")
}else{
pages = pages + 1;
}
}else if(do_what==-5){
//检查输入是否合法
var is_correct = checkNum();
if(!is_correct){
return ;
}
pages = document.getElementById("pages").value;
}else if(do_what>0){
pages = do_what;
} for(var i=0;i<count;i++){
if(i<(limit*(pages-1)+limit) && i>=limit*(pages-1)){
row_table[i].style.display = "block";
}else{
row_table[i].style.display = "none";
}
}
var goTo = "总共" + totalPages + "页  " + "当前第" + pages + "页  <a href='#' onclick='page_separate(-1)'>首页</a>  "
+ "<a href='#' onclick='page_separate(-2)'>尾页</a>   <a href='#' onclick='page_separate(-3)'>上一页</a>  "
+ "<a href='#' onclick='page_separate(-4)'>下一页</a>  跳转至"
+ "<input id='pages' name='pages' type='text' size='8'></input>页  <input type='button' value='GO' onclick='page_separate(-5)'></input>";
//根据页数实行页数隐藏
var page_count = "";
if(totalPages<10){
for(var i=1;i<=totalPages;i++){
page_count = page_count + "<a href='#' onclick='page_separate(" + i + ")'>" + i + "</a>  ";
}
}else if(totalPages<12 && totalPages>=10){
for(var i=1;i<=3;i++){
page_count = page_count + "<a href='#' onclick='page_separate(" + i + ")'>" + i + "</a>  ";
}
page_count = page_count + "<a href='#' onclick='page_separate(" + ((parseInt(totalPages/2))-1) + ")'>" + ((parseInt(totalPages/2))-1) + "</a>  ";
page_count = page_count + "<a href='#' onclick='page_separate(" + parseInt(totalPages/2) + ")'>" + parseInt(totalPages/2) + "</a>  ";
page_count = page_count + "<a href='#' onclick='page_separate(" + ((parseInt(totalPages/2))+1) + ")'>" + ((parseInt(totalPages/2))+1) + "</a>  ";
page_count = page_count + "...  ";
for(var i=totalPages-2;i<=totalPages;i++){
page_count = page_count + "<a href='#' onclick='page_separate(" + i + ")'>" + i + "</a>  ";
}
}else{
for(var i=1;i<=3;i++){
page_count = page_count + "<a href='#' onclick='page_separate(" + i + ")'>" + i + "</a>  ";
}
page_count = page_count + "...  ";
page_count = page_count + "<a href='#' onclick='page_separate(" + ((parseInt(totalPages/2))-1) + ")'>" + ((parseInt(totalPages/2))-1) + "</a>  ";
page_count = page_count + "<a href='#' onclick='page_separate(" + parseInt(totalPages/2) + ")'>" + parseInt(totalPages/2) + "</a>  ";
page_count = page_count + "<a href='#' onclick='page_separate(" + ((parseInt(totalPages/2))+1) + ")'>" + ((parseInt(totalPages/2))+1) + "</a>  ";
page_count = page_count + "...  ";
for(var i=totalPages-2;i<=totalPages;i++){
page_count = page_count + "<a href='#' onclick='page_separate(" + i + ")'>" + i + "</a>  ";
}
}
document.getElementById("paging").innerHTML = goTo;
document.getElementById("page_count").innerHTML = page_count;
}
//检查输入是否合法的函数
function checkNum(){
var char_pages = document.getElementById("pages").value;
if(char_pages==null || char_pages==""){
alert("请输入跳转的页数!");
return false;
}else{ if(!(/(^[1-9]\d*$)/.test(char_pages))){
alert("您输入的页数格式不对,请重新输入!");
return false;
}else{
if(char_pages>totalPages){
alert("您输入的页数大于总页数!");
return false;
}
}
}
}

  代码量较长,请各位耐心查看咯,其中还有个比较简单的checkNum函数用于检查跳转框输入值是否合法。其中,也没有什么新技术。

好了,分页技术比较简单,就总结到这里啦!

jsp、js分页功能的简单总结的更多相关文章

  1. 自己封装的JS分页功能[用于搭配后台使用]

    * 2016.7.03 修复bug,优化代码逻辑 * 2016.5.25 修复如果找不到目标对象的错误抛出. * 2016.5.11 修复当实际页数(pageNumber)小于生成的页码间隔数时的bu ...

  2. js -- 分页功能

    html 代码 <html> <head> <meta charset='utf-8'> <script type="text/javascript ...

  3. jQuery+AJAX实现纯js分页功能

    使用jQuery的AJAX技术,在bootstrap的框架下搭建的纯js分页 bootstrap作为Twitter推的一款前端框架,效果个人还是觉得很不错的.这次只是拿来作为网页元素的css样式表使用 ...

  4. JSP实现分页功能

    分页须知知识点: (1)JDBC2.0的可滚动结果集. (2)HTTP GET请求. 一.可滚动结果集   Connection con  = DriverManager.getConnection( ...

  5. 前端js分页功能的实现,非常实用,新手必看

    分享一个前端拿到数据后,自己生成分页的案例,案例如图显示,点击搜索后查询数据,显示数据列表,前端根据数据显示正确的分页 附上代码:代码附上,简单粗暴,自己用过的,兼容性好,没有封装,可以很好的分页原理 ...

  6. js分页功能实现

    实现一个js的分页并在弹出框中显示 1.分页插件使用:bootstarp-paginator.js,需要先引入bootstarp.js和jquery.js等: !function($){"u ...

  7. jsp学习-分页功能的实现

    <%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> < ...

  8. [Ext JS 4] Grid 实战之分页功能

    前言 分页功能的实现有两种途径: 一种是服务端分页方式, 也就是web客户端传递页码参数给服务端,服务端根据页面参数返回指定条数的数据.也就是要多少取多少.这种方式比较适合Grid  的数据量很大,需 ...

  9. 简单封装分页功能pageView.js

    分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...

随机推荐

  1. 如何使用JS脚本从HTML中分离图片标签与文本,替换文本中指定的内容并加粗(原创)

    var html='ddfsdfsdfdsd dfsdfsdffds<img _src="http://localhost:8490/60E86EA7-FE7B-44BF-8270-4 ...

  2. python-->基础-->004-->迭代器

    http://blog.chinaunix.net/uid-23500957-id-3990473.html http://www.cnblogs.com/vamei/archive/2012/07/ ...

  3. delphi日期格式化免操作系统依赖单元

    delphi免操作系统依赖单元 经常在windows里面,我们需要yyyy-mm-dd格式日期,可是用户却没有设置成这个 格式,而用程序去修改用户的日期格式设置,是不明智的,将影响其他程序的运行. 本 ...

  4. android里R.layout.的问题

    今天,在Exlipse里的一个项目在.java文件里写  setContentView(R.layout.activity_problem);时,显示错误,以为是R.java文件里没有对应的activ ...

  5. Linux命令小结:fdisk

    查看分区信息 分区信息包括容量.扇区数目.柱面数目.磁头数目和IO大小等信息. root@cvm:/# fdisk -l /dev/sda7 Disk /dev/sda7: 441.8 GB, 441 ...

  6. shell 脚本注意事项

    设脚本名为test.sh 第一行应该为#! /bin/bash 1.运行和调试的结果是不一样的 调试 sh -x test.sh  这时在计算两个数的和sum=$[$a+$b]时得到sum=3+4,而 ...

  7. TextFile 类的创写

    TextFile 作为自写的方法,继承自List<String>.像统计文本中出现的哪些单词,不重复等等,适合用Set集合完成统计. class TextFile extends Arra ...

  8. Browser默认书签加载过程

    Browser配置默认书签——string.xml中<string-array name="bookmarks" translatable="false" ...

  9. Oracle列操作(增加列,修改列,删除列)

    Oracle列操作 增加一列: alter table emp4 add test varchar2(10); 修改一列: alter table emp4 modify test varchar2( ...

  10. jQueryEasyUI

    jQueryEasyUI 编辑 jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.开发者 ...