这个分页方案采用设计模式中的“模板方法”模式,把分页逻辑的"工作流"封装在了一个抽象的前端控制器,扩展这个抽象父类并重写几个方法(返回总记录数、构造查询条件,当然还有控制器的其他逻辑)即可实现一个具有分页功能的Action(Struts)或Controller(SpringMVC)
我在实践中发现分页最麻烦的地方就是在action里面算页数、记录数这些东西,而具体的数据访问策略每个项目都回不同,所以这纯粹是一个web层的分页方案,你需要根据自己的数据访问方法去实现计算总记录数和查询某一页数据。
效率问题:每显示一页数据都至少访问两次数据库,分别是计算总记录数和查询当前页记录。
技术架构:
web层可以是任意的MVC框架,目前只实现了SpringMVC和Struts的版本(struts暂时还没跑通);
dao层也没有任何限制,只要按照范例中的模式来做既可;
最终页面上用一个标签来显示翻页按钮等。
源代码在sourceforge上,需要subversion访问:
https://svn.sourceforge.net/svnroot/powerstone/ps_paging
示例下载:http://www.javaeye.com/topics/download/961f2f8a-b756-45d8-9d4f-e25628a76463
btw:谁有兴趣想写个webwork的前端和我联系,或直接发个patch给我
我在实践中发现分页最麻烦的地方就是在action里面算页数、记录数这些东西,而具体的数据访问策略每个项目都回不同,所以这纯粹是一个web层的分页方案,你需要根据自己的数据访问方法去实现计算总记录数和查询某一页数据。
效率问题:每显示一页数据都至少访问两次数据库,分别是计算总记录数和查询当前页记录。
技术架构:
web层可以是任意的MVC框架,目前只实现了SpringMVC和Struts的版本(struts暂时还没跑通);
dao层也没有任何限制,只要按照范例中的模式来做既可;
最终页面上用一个标签来显示翻页按钮等。
源代码在sourceforge上,需要subversion访问:
https://svn.sourceforge.net/svnroot/powerstone/ps_paging
示例下载:http://www.javaeye.com/topics/download/961f2f8a-b756-45d8-9d4f-e25628a76463
btw:谁有兴趣想写个webwork的前端和我联系,或直接发个patch给我