在web编写中的经常会遇到,数据需要分页的情况。当数据量不是很大的时候。
可以直接使用js来分页。可以很好的提高性能。简化代码。数据量大的时候。还是需要使用java的分页类还处理。
今天我来分析下。分页中导航的显示效果的实现。
显示效果:
[页面总数小于等于10,全部显示,当前页特殊显示]
上一页 1 2 3 4 5 6 7 8 9 10 下一页
[页面总数大于10,部分显示,当前页特殊显示]
上一页 1 2 3 … 20 下一页 [当前页面为首页时,上一页不可用]
上一页 1 2 3 4 … 20 下一页
上一页 1 2 3 4 5 … 20 下一页
上一页 1 2 3 4 5 6 … 20 下一页
上一页 1 … 3 4 5 6 7 … 20 下一页
上一页 1 … 14 15 16 17 18 ... 20 下一页
上一页 1 … 15 16 17 18 19 20 下一页
上一页 1 … 16 17 18 19 20 下一页
上一页 1 … 17 18 19 20 下一页
上一页 1 … 18 19 20 下一页[当前页面为末页时,下一页不可用]
算法提取:
0.页码显示规则:
当前页为首页时不显示上一页; 上一页 1 2 3 … 20 下一页
当前页为尾页时不显示下一页; 上一页 1 … 17 18 19 20 下一页
1.页面总数(n)<=10 {
显示全部页码:上一页 1 2 3 4 5 6 7 8 9 10 下一页
}
2.页面总数(n) > 10 {
2.1 当前页码 <= 4 {
左侧显示所有 + 当前页码 + 右侧2个页码 + ... + 尾页
上一页 1 2 3 … 20 下一页
上一页 1 2 3 4 … 20 下一页
上一页 1 2 3 4 5 … 20 下一页
上一页 1 2 3 4 5 6 … 20 下一页
}
2.2 当前页码 > 4 且<= 页面总数(n) - 3 {
首页 + ... + 左侧2个页码 + 当前页码 + 右侧2个页码 + ... + 尾页
上一页 1 … 3 4 5 6 7 … 20 下一页
上一页 1 … 14 15 16 17 18 ... 20 下一页
}
2.3 当前页码 > 页面总数(n) - 3 {
首页 + ... + 左侧2个页面 + 当前页码 + 右侧显示所有
上一页 1 … 15 16 17 18 19 20 下一页
上一页 1 … 16 17 18 19 20 下一页
上一页 1 … 17 18 19 20 下一页
上一页 1 … 18 19 20 下一页
}
}
下面我来把他修改成java语言。
[java]
public class PageTest {
public static String pageControl(int page,int count){
String strHtml = "";
if(page > 1){
strHtml += "上一页";
}
if(count <= 10){
for(int i = 1;i<=count;i++){
if(page == i){
strHtml+=" ["+i+"]";
}else{
strHtml+=" "+i;
}
}
}else{
if(page<4){
for(int i = page-1;i>0;i--){
strHtml+=" "+i;
}
strHtml+=" ["+page+"]";
strHtml+=" "+(page+1);
strHtml+=" "+(page+2);
strHtml+=" ...";
strHtml+=" "+count;
}
if(page>4 && (page<=count-3)){
strHtml+=" "+1;
strHtml+=" ...";
strHtml+=" "+(page-2);
strHtml+=" "+(page-1);
strHtml+=" ["+page+"]";
strHtml+=" "+(page+1);
strHtml+=" "+(page+2);
strHtml+=" ...";
strHtml+=" "+count;
}
if(page>count-3){
strHtml+=" "+1;
strHtml+=" ...";
strHtml+=" "+(page-2);
strHtml+=" "+(page-1);
strHtml+=" ["+page+"]";
for(int i = page+1;i<count;i++){
strHtml+=" "+i;
}
}
}
if(page < count){
strHtml += "下一页";
}
return strHtml;
}
public static void main(String[] args) {
System.out.println(PageTest.pageControl(6, 20));
}
}
[/java]
http://software.intel.com/zh-cn/blogs/2011/12/16/web-2/?cid=sw:prccsdn2101
分享到:
相关推荐
利用ASP.NET的缓存功能,结合性能良好的存储过程,一次性地缓存数据库数页数据,以供用户分页查询,是优化Web数据查询性能的比较理想的方式。文章详细介绍了优化模型的实现,并进行了性能分析
为了探索Django 框架下Web 数据查询分页的实现方法及性能,本文先对Web 数据查询分页的执行过程和在 其它框架下常用的分页方法进行了分析研究。在此基础上,提出了在Web 服务层和在数据库服务层分页两种方案 ...
分页栏是网页上最常见不过的一个组件,本博文给出分页栏的一个web2.0标准示例,并作简要分析
分析Java Web中分页的技术,并对各种分页技术进行对比。具体说明了超大数据量的分页在MySQL、Or-acle中的实现方法,编写了针对Oracle数据库分页接口和实现类。
Web开发是今后分布式程式开发的主流,通常的web开发都要涉及到与数据库打交道,客户端从服务器端读取通常都是以分页的形式来显示,一页一页的阅读起来既方便又美观。本文分析了分页程序的原理,介绍了分页程序的主要...
在分析了Web应用体系结构的基础上,提出了一种分页性能模型,对基于Java技术的多种分页技术进行了性能分析。提出了一种可扩展的分页技术,利用改进的抽象工厂模式和分块方法解决了通用性和页间切换速度较慢的问题,...
进一步加深对分页技术的理解 熟练session和filter的概念和运用 掌握html,了解css 掌握页面开发技术javasciprt的基本应用 掌握Ajax技术原理 掌握Tomcat链接池的配置 熟悉JFreechart的运用 了解验证码技术 熟悉上传...
本文通过使用场景分析给大家介绍了Java Web中常用的分页组件(Java端实现),非常不错,具有参考借鉴价值,需要的朋友参考下吧
最近做了下listview的分页,跟WEB上的分页是一个意思,需要那几个分页参数,不同的是sqlite中分页的查询语句,简便的方法需要用Limit,Offset关键字,前者是查询每页展示的记录数,后者是越过多少记录数,说得明白点就是...
数据分页是Web应用程序开发中经常使用的一种技术,也是提高Web数据访问性能的主要手段。结合ASP.NET的优点,详细分析了ASP.NET中各种数据分页技术,并通过分析试验结果比较了各种数据分页技术的优缺点。
前端开发:HTML、CSS、JavaScript等用于构建网页和Web应用程序的技术。 后端开发:涉及服务器端编程、API开发、数据库集成等技术。 移动应用开发:包括iOS开发(使用Swift或Objective-C)和Android开发(使用Java或...
在以数据为中心的动态Web应用开发过程中,数据列表的分页显示是必须具备的功能。本文结合ASP.NET与SQL(结构化查询语言)编程特性,深入研究了多种分页显示方法,并进行了相关性能的分析与比较,从而为不同应用环境...
当然你会说Laravel的Bootstrap样式也很好看啊,但是实际项目中,翻页按钮常常需要满足的客户的需要,特别在开发一款支持手机适配的Web APP,更是需要使用自定义的样式。 所以,学习一样东西不能一知半解,而是究其...
分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此...
web网站,玛莎拉蒂案例,包含三个界面 ,本文件是一份毕业设计,包含,三级页面,轮播图,分页,底部栏,响应式布局,
包括实用程序功能,Google Analytics(分析)支持和分页支持。 用法 库“ canadensys-webapp-core”应该用作WAR覆盖,因为它包含与“ webapp”相关的内容。 Gradle: : Maven: : 本地安装 mvn clean install 在...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...