jsp、js分页功能的简单总结
一、概述
首先,我们要明确为何需要分页技术,主要原因有以下:
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分页功能的简单总结的更多相关文章
- 自己封装的JS分页功能[用于搭配后台使用]
* 2016.7.03 修复bug,优化代码逻辑 * 2016.5.25 修复如果找不到目标对象的错误抛出. * 2016.5.11 修复当实际页数(pageNumber)小于生成的页码间隔数时的bu ...
- js -- 分页功能
html 代码 <html> <head> <meta charset='utf-8'> <script type="text/javascript ...
- jQuery+AJAX实现纯js分页功能
使用jQuery的AJAX技术,在bootstrap的框架下搭建的纯js分页 bootstrap作为Twitter推的一款前端框架,效果个人还是觉得很不错的.这次只是拿来作为网页元素的css样式表使用 ...
- JSP实现分页功能
分页须知知识点: (1)JDBC2.0的可滚动结果集. (2)HTTP GET请求. 一.可滚动结果集 Connection con = DriverManager.getConnection( ...
- 前端js分页功能的实现,非常实用,新手必看
分享一个前端拿到数据后,自己生成分页的案例,案例如图显示,点击搜索后查询数据,显示数据列表,前端根据数据显示正确的分页 附上代码:代码附上,简单粗暴,自己用过的,兼容性好,没有封装,可以很好的分页原理 ...
- js分页功能实现
实现一个js的分页并在弹出框中显示 1.分页插件使用:bootstarp-paginator.js,需要先引入bootstarp.js和jquery.js等: !function($){"u ...
- jsp学习-分页功能的实现
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> < ...
- [Ext JS 4] Grid 实战之分页功能
前言 分页功能的实现有两种途径: 一种是服务端分页方式, 也就是web客户端传递页码参数给服务端,服务端根据页面参数返回指定条数的数据.也就是要多少取多少.这种方式比较适合Grid 的数据量很大,需 ...
- 简单封装分页功能pageView.js
分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...
随机推荐
- C++奇数魔方阵
理解了算法的思想就很简单了, 首先将1放到第一排的中间,然后向左上角走,当行数超过索引,则将该数放到最后一排接下来的一列中去,当列数超过索引,则放到上一排的第一列中去,若都没有超过索引,但是此时的右上 ...
- shell脚本学习--shell中的变量$
$$ :Shell本身的PID(ProcessID) $! :Shell最后运行的后台Process的PID $? :最后运行的命令的结束代码(返回值) $- :使用Set命令设定的Flag一览 $* ...
- ubuntu下完全安装mcrypt
源文章: ubuntu下安装mcrypt 1.首先要下载三个软件 0libmcrypt-2.5.8.tar.gz 下载地址:http://sourceforge.net/project/showfil ...
- 关于使用tracert命令检测网络问题
tracert命令是一个电脑网络工具-Windows命令行界面程序和内建命令,运行该命令后可以显示本机IP到达目标IP所经过的路由器IP地址,和响应的延迟信息! 在windows操作系统中,点击“开始 ...
- yield学习续:yield return迭代块在Unity3D中的应用——协程
必读好文推荐: Unity协程(Coroutine)原理深入剖析 Unity协程(Coroutine)原理深入剖析再续 上面的文章说得太透彻,所以这里就记一下自己的学习笔记了. 首先要说明的是,协程并 ...
- jsp 和jspf
http://www.cnblogs.com/liaojie970/p/5035077.html
- Android 隐藏软键盘方法
第一种:public static void hideInput(Activity activity) { View curFoc = activity.getCurrentFocus(); if ( ...
- KVC笔记
利用KVC可以随意修改一个对象的属性或者成员变量(并且私有的也可以修改) 示例代码: 示例一: Person *p = [[Person alloc] init]; p.dog = [[Dog al ...
- kettle etl
使用注意点 1 如果服务器资源有限的话,尽量少开任务窗口,但是要有容错机制,可以分为按天按分钟 2 如果不想写较长的sql可以用detail来启动 3 在设置每天提交的条数时,如果数据很少,而设置值很 ...
- Objective C笔记(第一天)
• OC语言概述 1.早在20世纪80年代早期,Bard Cox发明了Objective C, 是扩充的C,面向对象的编程语言. 2.NEXTSTEP简称NS a.1985年,Steve Jobs成⽴ ...