




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于web分页技术的研究余凯(湖北科技学院,咸宁 437100)摘 要 随着社交网络的兴起,对于有大量数据的情况下,所有的内容显示在一页是不现实的,通常的做法就是采用分页显示技术,每页显示一部分数据。根据数据量和具体应用情况,可以采取不同的分页策略。 关键词:分页 优化 结构化查询语言The Research of Paging Technology Based on WebYUKAI(Hubei University of Science and Technology,Xianning 437100)Abstract with the rise of social networking,for the case of large amounts of data, All of the content display in the a page is unrealistic, the usual practice is to pagination display a subset of data per page. Based on the amount of data and the specific application, you can take a different paging strategies.Key words paging optimize SQL1引言在JSP页面中,访问数据库并读取一个数据结果集时,如果记录数太多,一个是会占用服务器的大量内存,造成服务器负荷过重,数据传输和显示速度缓慢得难以忍受;另一方面,一个JSP页面展示空间是有限的,不可能列出所有的数据库记录,一次传输所有的数据到客户端也非常的不合理。因此,当检索的数据很多时,通常需要分页显示数据,并要实现翻页。建立动态Web应用,分页浏览功能不可或缺,这是数据库与Web页面处理中非常常见的问题。其解决方案有很多,并且随着技术的发展,许多新的方案被提出来。本文将针对数据分页问题给出几种解决方案,并叙述较好的方式。2几种常见的分页解决方案2.1使用游标定位,丢弃不属于页面的数据直接使用ResultSet来处理。ResultSet是直接在数据库上建立游标,然后通过ResultSet的行位置定位接口来获得指定行位置的记录。这是一种简单的分页显示实现技术,在每个页面先查询得到所有的数据航,接着使用游标定位到结果集中页面对应的行数,读取并显示该页面的数据,然后关闭数据库连接,丢弃该页面之外的结果集数据。这种分页技术适用于数据量极少的查询,但对于数据量大的查询操作来说效率非常低,因为这种操作需要范围内所有的数据行,从而浪费了大量的内存资源。减少了数据库连接对象的多次分配获取,减少了对数据库的SQL查询执行。而这些资源都是十分宝贵的有限制的。由于数据库的查询及其分页处理是直接使用JDBC的,并在分页中是使用RseultSet的查询结果集游标形式实现的,并且每个客户对应一个会话,每个会话对应一个数据库连接和一个结果集(游标),数据库连接和游标是在会话终止时才释放的。在用例分页查询的整个会话期间,一个用户的分页查询就要占用一个数据库连接对象和结果集的游标,这种方式对数据库的访问资源占用比较大,并且其利用率不是很高。2.2使用缓存结果集,一次查询所有数据目前比较广泛使用的分页方式是将查询结果存在HttpSession或状态Bean中,翻页的时候从缓存中取出一页数据显示。这种方法目前被广泛采用,因为它能减少数据库的连接次数,节省数据连接资源,但有两个主要的缺点:一是用户可能看到的是过期数据;二是如果数据量非常大时第一查询遍历结果集会耗费很长时间,并且缓存的数据也会占用大量的内存,效率明显下降。因此数据库访问及其数据库的处理可能是个瓶颈。2.3使用数据库提供的定位集的SQL语句,返回特定行的数据在用户的分页查询请求中,将获取的查询请求的行范围作为参数,通过这些参数生成SQL查询语句,然后请求获得一个数据库连接对象并执行SQL查询,把查询结果范围给用户,最后释放所有数据库访问资源。该方式无论对内存资源的占用还是对数据库资源的占用都是最合理的,是效率最高的一种实现方式,但是由于不同数据库对应的定位行集SQL语句的语法差异很大,如果需要改变Web应用所使用的后台数据库的话,就要修改程序中所有特定数据库的定位行集SQL语句。直接使用数据库产品的提供的对查询的结果集可定位行范围的SQL接口技术。在用户的分页面查询请求中,每次可取得查询请求的行范围的参数,然后使用这些参数生产取得指定行范围的的SQL查询语句,然后每次请求获得一个数据库连接对象并执行SQL查询,把查询的结果返回给用户,最后释放说有的数据库访问资源。这种技术是直接使用数据库产品自己提供的可对查询结果集定位行范围过滤的功能,因此直接利用了数据库的性能对此分页查询的优化功能。对数据库的访问资源(数据库连接对象,数据库游标等)没有浪费,这些资源的充分重复的利用。对查询的结果对Web容器没有什么特别要求。要执行多次数据库SQL查询操作。对每次的分页面操作请求都要指定相应范围的结果集来执行SQL语句的数据库查询操作,这对数据库有一定的影响。对每次分页面查询请求要频繁的从Web容器中获得数据库访问资源(数据库连接对象和数据库游标)。要依赖于具体的数据库产品。因为对没有实现没有提供此技术的数据库产品不能使用此方式。由于每次对数据库的SQL查询操作相对而言耗用的数据资源比较少,并且在实际用户的操作中,有可能用户对查询的所有结果集只是需要查看其中的部分页面。3本文用到的技术简介3.1 Java语言Java命名来源于开发人员名字的组合:James Gosling、Arthur Van Hoff和Andy Bechtolsheim首字母的缩写。它是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的,安全的,结构的,中立的,可移植的,性能很优异的,多线程的,动态的语言。它具有以下特点:Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。Java对程序提供了安全管理器,防止程序的非法访问。Java的编程类似C+,学习过C+的读者将很快掌握Java的精髓。Java舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。 Java吸取了C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。 Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。 Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Byte code校验等功能。WEB服务器编程使用的主要是JSP(Java Server Pages)技术,是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。3.2 JDBC技术JDBC(Java DataBase Connectivity,Java数据库连接)是一套允许Java与SQL数据库对话的程序设计接口,它是用于执行SQL语句的Java API,是Java应用程序连结数据库、存取数据的一种机制,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组成。由于Java是一个健壮,安全,易于使用的,易于理解且可以从网络中自动download,所以它成为开发数据库应用的一种良好的语言基础。它提供了C,C+,Smalltalk, BASIC, COBOL, and 4GLs的许多优点。有了JDBC,用户只需用JDBC API写一个程序逻辑,它可以向各种不同的数据库发送SQL语句。所以,在使用Java编程语言编写应用程序时,不用再去为不同的平台编写不同的应用程序。由于Java语言具有跨平台性,所以将Java和JDBC结合起来将使程序员只须写一遍程序就可让它在任何平台上运行,这也进一步体现了Java语言“编写一次,到处运行”的宗旨。JDBC向应用程序开发者提供独立于数据库的、统一的API,当应用程序被移植到不同的平台或数据库系统,应用程序不变,改变的是驱动程序,驱动程序扮演了多层数据库设计中的中间层(或中间件)的角色。JDBC主要完成以下四方面的工作:加载JDBC驱动程序;建立与数据库的连接;使用SQL语句进行数据库操作并处理结果;关闭相关连接总而言之,JDBCAPI是能体现SQL最基本抽象概念的、最直接的Java接口。它建构在ODBC的基础上,因此,熟悉ODBC的程序员将发现学习JDBC非常容易。JDBC保持了ODBC的基本设计特征。实际上,这两种接口都是基于X/OPENSQL的调用级接口(CLI)。它们的最大的不同是JDBC是基于Java的风格和优点,并强化了Java的风格和优点。JDBC支持两层模型,也支持三层模型访问数据库。两层模型中,一个javaAppple或者一个JA-va应用直接同数据库连接。这就需要能直接被访问的数据库进行连接的JDBC驱动器。用户的SQL语句被传送给数据库,而这些语句执行的结果将被传回给用户。数据库可以在同一机器上,也可以另一机器上通过网络进行连接。这被称为“Client/Server”结构,用户的计算机作为Client,运行数据库的计算机作为Server。这个网络可是intranet,比如连接全体雇员的企业内部网,当然也可以是internet。 在三层模型中,命令将被发送到服务的“中间层”,而“中间层”将SQL语句发送到数据库。数据库处理SQL语句并将结果返回“中间层”,然后“中间层”将它们返回用户。MIS管理员将发现三层模型很有吸引力,因为“中间层”可以进行对访问的控制并协同数据库的更新,另一个优势就是如果有一个“中间层”用户就可以使用一个易用的高层的API,这个API可以由“中间层”进行转换,转换成底层的调用。而且在许多情况下,三层模型可以提供更好的性能。到目前为止,“中间层”通常还是用C或C+实现,以保证其高性能。但随着优化编译器的引入,将java的字节码转换成高效的机器码,用java来实现“中间层”将越来越实际。而JDBC是允许从一个Java“中间层”访问数据库的关键。3.3 实现分页显示目前比较好的分页做法是每次翻页的时候只从数据库里检索页面大小的块区的数据。这样虽然每次翻页都需要查询数据库,但查询出的记录数非常少,网络传输数据量不大,如果使用连接池更能略过最耗时的建立数据库连接过程。而在数据库端有各种成熟的优化技术用于提高查询速度,比在应用服务器层做缓存有效多了。取得页码从数据中提取数据显示在IE中点击页码链接商品编号商品名称商品类别%String str = (String) request.getParameter(page);if (str = null) str = 0;int pagesize = 10;/页面大小rsAll.last();int recordCount = rsAll.getRow();/总行数int maxPage = 0;maxPage = (recordCount % pagesize = 0) ? (recordCount / pagesize): (recordCount / pagesize + 1);/总页数int currentPage = Integer.parseInt(str);if (currentPage maxPage) currentPage = maxPage;rsAll.absolute(currentPage - 1) * pagesize + 1);/定位记录指针位置for (int i = 1; i 详情 购买 当前页数:/ 1) % 第一页 a href=product1.jsp?page=上一页 % if (currentPage a href=product1.jsp?page=下一页 a href=product1.jsp?page=最后一页 4 结语在本文的写作过程中参考了网上有关资料,过程中遇到许多难题是我从没有想到的。在整个的学习过程中,我学习了数据库、JSP、HTML、Apache、网站建设的基本思想等重要内容。到现在为止,我还是很庆幸能够学到这么多的内容。这次技术难点有常规分页技术。常规分页技术比较简单,例如在JSP页面中直接分页,采用JSP+Servlet进行分页,结合JSP+JavaBean进行分页等,都很容易实现。JSP页面分页技术实现的关键在于获得当前页面的数据,在ResultSet里获得当前页面的数据是比较简单易于实现的。万能分页技术。万能分页技术相对复杂一些,其实质上是针对不同的表,不同的查询SQL采用可完全复用的代码实现分页,非常灵活,具有很强的通用性。实现的关键在于动态的获得对结果集中字段的描述性信息,并将结果集的数据以HTML形式返回。结合数据库特点进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 猫一课优翼课件
- 工厂环保工程改造方案(3篇)
- 东莞工程综合布线方案(3篇)
- 电力工程审计方案(3篇)
- 牧场安全培训课件
- 安全教育培训馆标志课件
- 溧阳工厂面试题库及答案
- 客服行业面试题库及答案
- 科技之星面试题库及答案
- 康复面试题库及答案大全
- 住院期间成人泌尿造口护理技术标准
- 《桂菜制作实训教程》中高职烹饪专业全套教学课件
- 2025年中国共青团新团员《团员团务团章团内务》必知知识考试题库与答案
- 2025-2030中国汽车钛合金行业市场现状供需分析及投资评估规划分析研究报告
- 2025重庆市綦江区东林街道社区工作者考试真题
- 中国2型糖尿病防治指南(2024版)解读课件
- 《思想道德与法治》课件-第一章 领悟人生真谛 把握人生方向
- 2024法律职业资格(客观题)真题含答案
- GB/T 12008.7-2025塑料聚氨酯生产用聚醚多元醇第7部分:碱性物质含量的测定
- 2025年湖南韶山红旅教育培训集团有限公司招聘笔试参考题库附带答案详解
- 社区用房使用协议书
评论
0/150
提交评论