JSP分页技术
本文从两个角度的两个方面来细谈分页技术
1、先谈一谈为什么要分页
我们在做网页查询数据显示的时候。如果数据量过大,查询的时间一定会加长(这边不牵扯查询索引),这样会导致我们数据库的响应时间,服务器的响应时间,乃至整个页面的访问时间都是受到影响的。所以我们采用分页的技术,来将数据库信息分页显示。这样减轻服务器压力,对整个系统是友好。展现数据也是友好了。总体来说。分页技术能够减轻系统压力,让数据展现更加友好。
2、从两个角度来谈怎么实现分页
第一个角度:数据源
正常情况下浏览器拿数据应该是先请求服务器,服务器去数据库拿数据,然后在响应给浏览器,渲染数据。这边数据源就可能有两种情况。
①服务器是作为传递者,服务器去数据库拿数据。这边实现相对比较简单。这边提示一个关键的sql代码:
select * FROM news WHERE ntid=xx ORDER BY xx DESC LIMIT position,length
简单的这边通过limit来进行分页通常设置position来设置位置,通过length来设置你显示多少条数据。作为一个参数,当你发出请求的时候把position这个值改一下就行了。
②服务器是作为数据源,我们服务器去拿数据的时候,可以一次性全部拿到(前提是数据量不是太大的时候),可以把数据缓存在服务器,这边又很多技术可以实现这点。介绍一个memcashed(还有redis)两者区别可以自行百度,这边不阐述。通过这个缓存技术。我们可以一次性把想要的数据缓存在服务器,然后以后直接从服务器拿数据就好了,可以不用与数据库交互了
--------总结:通过以上两个方面来看浏览器请求数据的时候数据源可以不同。但是两者都有优缺点。
一、如果用户对于分页的点击次数相对较多。那么如果从①方面拿数据。会多次访问数据库。在用户较多的情况下,显然也是不合理的。对于这种情况。可以考虑把部分信息缓存起来。减轻数据库访问压力
二、缓存的目的是为了减轻数据库访问的压力,然而服务器端代码是运行在内存中的。所以缓存的数据必然会占据太多内存。所以缓存太多的数据也是不合理的。因此二者区别在于根据不同的业务需求,来进行设计。如果说一个更为合理的办法就是。部分缓存。部分访问。这个部分就看具体配置了。
第二个角度:如何响应数据
①通过jsp-------servlet--------jsp来实现响应浏览器渲染数据。这边会出现浏览器网址的变化。势必会刷新整个页面
②通过Ajax局部刷新分页的盒子。其他功能不受影响。
从上面看而言。自然是通过Ajax来做分页是合理的。但是具体实现的代码又相对于①来说复杂很多。但是作为程序员,简化代码是应当具备的最基本的素质,为了用户更好的体验。显然使用Ajax更好。总不能你看下一页的评论。把自己看的视频刷掉了吧。
好了------就说到这边。暂时这边做项目使用的技术是部分访问数据库,部分缓存到服务器。然后使用Ajax。来做分页的。可能有更好的办法吧。写写这个防止以后写分页没思路。